Source object for rendering templates

This introduces a new object, `Source`, to use to render templates.
To render a template, create a source object for the given root
of source files you want to render.  Then call render passing it
the name of the file you want (relative to the root and without the
implied `.nm` file extension).

You can render templates using fully qualified, absolute paths - the
`Template` object uses a default source with the root `/`.

The motivation for adding this is two-fold. One, I wanted an object
to abstract the manual building of a template and calling `__data__`
to get the rendered results.  Two, in coming featueres I want to add
partial rendering and template source caching.  Both of those features
need to have some shared state between template builds/renders.  In
partial calls, it is preferable to not have to use full qualified
source paths.  To cache template source, I need an object to store
the source in memory.  This `Source` object will aid in both of
these features.

Previously I had thought the `Render` object might suffice but as
I've been implementing things it became unfit for what I wanted to
do.  This removes that legacy object.

Finally, I introduced a `Factory` and moved template handling to
be done using factories in the tests.  This is just a minor cleanup
that helped out with testing this feature.