add capture render/partial methods to the template source/engine API

This adds capture methods to the template system API.  These methods
allow passing a content block to render calls.  They work like their
non-capture counterparts in terms of handling layouts.

These are intended for engines that allow content capturing when
rendering.  They are optional and should only be implemented where
appropriate.  They will not be exposed to the view handler or runner
and will only be called from template scopes.

Their main utility is for implementing template helper methods that
need to capture content.  A plugin can configure its source and then
provide helper methods that call these on its source.

This also cleans up how templates are referenced in these methods.
Everything now consistently refers to the template using the
`template_name` local var.

@jcredding like we discussed.  Ready for review.