Hide `$` property, pass `$` to modules.

Hide the `$` property by adding it to a prototype. Users can avoid it by
using `Object.keys($)` to get a list of variables in scope.

Moving the declaration of the `context` object to `rewrite` also ensures
that it will be passed to module evaluation. It wasn't being passed into
modules, only when evaluating expressions in Stencils.

Closes #91.

File                             Raw         Min         Zip     Min/Zip
index.js                 28216/27.55  8980/08.77  7137/06.97  3447/03.37
Merge branch `apply` into `master`.