Clean up ComponentCompiler
Add support for context blocks

Context blocks change the *context* of the template, making it possible
to operate on a different presenter within the block. This is useful in
a number of cases, e.g. forms:

    {{@signup_form}}
      <b>{{name_label}}</b> {{name_input}}<br>
      <b>{{email_label}}</b> {{email_input}}<br>
      {{submit_button}}
    {{/signup_form}}
Statically check that a component can be used in a context block
Add an integration spec for context blocks
Make sure that variables are passed to child presenters