Context switching in template()

When template() is called on an ItemView, `this` is the Window context, not the context of the view.

This makes adding custom properties to the data hash troublesome, as the template() function cannot access the View's model or functions.

This PR adds in a `context` argument to the Renderer which allows the ItemView and CompositeView render() functions to pass their context into the Renderer, which then calls the template function in that context.