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
`@app.app` ? Is that because of internal app? No it shouldn't.. oh yes `@app` is internal app and we want the external app? Could we make a convenience method on internal that just does this for external? Seems a bit awkward this way and demeterey