add `compile` to the template engine render API

This method is given template content that must be rendered against
the given locals.  This will be used when rendering multiple engines
on the same template file.  The first engine will open the file and
do its render while subsequent engines will compile rendered content
from the upstream engines.

The default template engine is a no-op pass-thru.  This is so that
if there is no engine configured for an extension, it will be ignored.

Closes #154.