Update AST location info to match SpiderMonkey

Part of #889
Update ProgramNode to better match SpiderMonkey
Update MustacheNode for new AST structure
Update statement node ASTs
Update literal ast nodes for new spec
Replace DataNode and IdNode with PathNode

This is a breaking change for string mode users as there is no longer a distinct type for data parameters. Instead data consumers should look for the @ prefix value.
Simplify Path and Sexpr calculated flags
Update subexpression and hash AST constructs
Treat partial exec in a manner closer to helpers

This helps unify the code handling and will also be needed to support string/id tracking on partials.
Rename AST objects to match type names
Add original to BooleanLiteral
First crack at compiler API docs
Move Jison parsing out of AST into helpers
Rework strip flags to make clearer at in AST level

Rather than keeping state in the AST, which requires some gymnastics, we create a separate visitor flow which does the top down iteration necessary to calculate all of the state needed for proper whitespace control evaluation.
s/Subexpression/SubExpression/
Merge pull request #915 from wycats/ast-update

Ast update
Track source node via accept call rather vs opcode
Move compileProgram out of visitor methods
Drop unused JavaScriptCompiler.namespace param
Add basic docs for JavaScriptCompiler override API