Add ability for lambda to change the context for fragment execution

This capability enables the following powerful use cases:
* Lambdas now have the power to load portions of the context on-demand, so expensive-to-compute portions of the root context can be deferred until/unless the template actually uses them.
* Lambdas now have the capability to intercept and mimick the native behavior for objects and lists in section or inverse blocks.  This permits all sorts of use cases, including tracing template evaluation, translating the template into other languages, etc.

Please consider accepting this improvement, and thanks for your responsiveness to all my previous pull requests.