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.
Renaming and removing accessor, use public_send

Both based on code review to tighten things up a bit.
Provide delegator for eval_with_additional_context on InternalApp

This makes calling it from Shape cleaner.
Merge pull request #861 from shoes/shape_context

Run shape blocks with app as self

Changelog: bugfix