Merge pull request #7 from redding/kr-locals

apply locals to template scope as reader methods
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).  The README and gemspec have been
updated to reflect this change.

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 features 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.
updated bench scripts to bench against Nm

This reworks the bench helpers to namespace them all under `NmBench`
and commonizes the non engine specific aspects (like the `Logger`).
Then using this common stuff, it adds scripts for benching against
Nm.

There are two benches for Nm: one where the source is built once
and then rendered against many times, and one where the source is
re-built each time.  I did this to make sure I was comparing fairly
against RABL.

The results are stored in `bench/results`.  Nm, even with rebuilding
its source unnecessarily each run, outperforms RABL in all cases.