Run shape blocks with app as self

To get the proper behavior from Shoes 3, we need to evaluate the `shape` method
calls in the context of the app. We discussed a separate context object, but it
was pointed out that the block can access instance variables on the app, so it
really, really needs to just be the app itself where we eval.

However, shape needs more functionality than the app has, so this change adds a
method for setting an `additional_context` on the app which will be forwarded
to by `method_missing`.

Shape then uses this functionality to set itself as the additional context, so
it's methods are available within the block alongside the methods available on
the app itself.

Fixes #857
Alternatively, my only usage of this ended up moving into `eval_with_additional_context`, and I think the attr_accessor is only used from tests. I'll see if I can get rid of the public visibility of that altogether.