cleanup template source/engine rendering api

This does a few cleanups to the template source/engine rendering
api.  This is all iterations to get the proper API in place for
developing custom engines.

There are 3 functions each engine can optionally implement:

* `render`: given a view handler, render the template considering
  handler layouts with the given locals
* `partial`: render the template with the given locals
* `capture_partial`: render the template with the given locals
  yielding to the given content block (capturing the given content).

Only `render` and `partial` will be exposed to the view handlers via the
runners as it isn't necessary to render with content blocks at the view
handler level.  Engines can choose to implement these methods in their
scopes as they see fit.

Anyway, all this is just another iteration to lock down the rendering
api for custom engines.