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
As `additional_context` will be user facing, I think it might be worth to give it a more obscure name/let it start with a _ to avoid name collisions.