Add support for context blocks

Implements #104.

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:

```html
<!-- app/views/signups/new.html.curly -->
{{@signup_form}}
  <b>{{name_label}}</b> {{name_input}}<br>
  <b>{{email_label}}</b> {{email_input}}<br>
  {{submit_button}}
{{/signup_form}}
```

The presenter will have to implement a `signup_form` method that takes a block argument:

```ruby
class Signups::NewPresenter < Curly::Presenter
  presents :user

  def signup_form(&block)
    form_for(@user, &block)
  end
end
```

As with collection blocks, a different presenter will be used when rendering the block. In this case, Curly will look for `SignupFormPresenter` in the current presenter scope. That presenter will in turn be responsible for providing the components used by the template inside the block:

```ruby
class SignupFormPresenter < Curly::Presenter
  presents :signup_form, :user

  def name_label
    @signup_form.label :name
  end

  def name_input
    @signup_for.text_field :name
  end

  # etc.
end
```