apply locals to template scope as reader methods

This updates the template init api to take an optional locals hash.
Any keys in the given hash will be exposed as reader methods on the
template object.  This allows you to pass in custom local values and
use those values as local methods in template source files.

This also validates that if you give a local named after a template
method, you get the local as expected but it doesn't interfere with
the method aliases.

**Note**: this also updates the alias handling of the node and map
methods.  This technically isn't _needed_ but I wanted to highlight
how the "underlying" node/map logic is separate from the way(s) you
can call it via a template.  So now, the main logic is in "underscored"
methods and the available aliases just alias this main method.  This
seemed to flow nicely with the `__data__` method as well.

@jcredding ready for review.