I needed to make it easier to handle scopes and define custom tags, including context-sensitive tags.
This is the first step towards supporting custom tags. There are wrinkles I need to work out, since I'm not 100% sure what the finished code will look like.