Add Contexts to XHP

This introduces the idea of contexts, which is basically key/value
pairs that get propagated to all children and rendered roots. The
primary use case for something like this is when you want a
higher-level component to control the context in which a descendant XHP
will belong. For instance, say you have a blog post with comments and
by default you want all comments visible on the permalink, but only the
two most recent comments visible when viewed from a feed. You can set a
context at the page-level and your comments XHP object can look for it
to render accordingly.