add line numbers to nodes when parsing

closes #691
Merge pull request #692 from fivetanley/line-numbers

add line numbers to nodes when parsing
Make the environment reusable.
Pull options out from param setup to allow easier extension.
Fix ProgramNode parameter handling under IE
Merge pull request #694 from blakeembrey/compile-env

Make the environment reusable
Added support for subexpressions

Handlebars now supports subexpressions.

    {{foo (bar 3)}}

Subexpressions are always evaluated as helpers; if
`3` were omitted from the above example, `bar`
would be invoked as a param-less helper, even
though a top-levell `{{bar}}` would be considered
ambiguous.

The return value of a subexpression helper is
passed in as a parameter of a parent subexpression
helper, even in string params mode. Their type,
as listed in `options.types` or `options.hashTypes`
in string params mode, is "sexpr".

The main conceptual change in the Handlebars code
is that there is a new AST.SexprNode that manages
the params/hash passed into a mustache, as well
as the logic that governs whether that mustache
is a helper invocation, property lookup, etc.
MustacheNode, which used to manage this stuff,
still exists, but only manages things like
white-space stripping and whether the mustache
is escaped or not. So, a MustacheNode _has_
a SexprNode.

The introduction of subexpressions is fully
backwards compatible, but a few things needed
to change about the compiled output of a template
in order to support subexpressions. The main one
is that the options hash is no longer stashed in
a local `options` var before being passed to
either the helper being invoked or the
`helperMissing` fallback. Rather, the options
object is inlined in these cases. This does
mean compiled template sizes will be a little
bit larger, even those that don't make use of
subexpressions, but shouldn't have any noticeable
impact on performance when actually rendering
templates as only one of these inlined objects
will actually get evaluated.
Merge pull request #690 from machty/subsexpr

Added support for subexpressions
Add location tracking to sexpr
Fix for reserved keyword "default"
Fix multiple hash handling in subexpressions
Set laxbreak jshint flag
Fix incorrect stack pop when replacing literals
Fix stack id "leak" on replaceStack
Add stack handling sanity checks
Use literal for data lookup
Whitespace cleanup
Add subexpression benchmark
Remove duplication from generated subexpressions
Include line info in compiler thrown exceptions

Fixes #636