New lexer that uses Esprima.js internally.

Unlike our old lexer, Esprima gives us comment nodes and normal tokens
as separate lists, which we have to merge together into continuous
stream.
Simplify comments and tokens merging.

Replaced the previous clumsy algorithm with a way simpler and faster one.
Separate private methods in EsprimaLexer.
Separate EsprimaLexer and EsprimaTokenizer.

The former now implements the same API as old Lexer, while the
Tokenizer is a singleton class that loads esprima.js just once
and provides the tokenizing service.  Tokenizer also converts
all Esprima tokens to JsDuck::Lexer kind of tokens.
Fix handling of Null and Boolean tokens.
Correct JavaScript syntax in all Aggregator tests.

Esprima can not parse partial JavaScript snippets.
Use EsprimaLexer in JsParser.

But keep JsLiteralParser still using the old Lexer.
Fix esprima.js path.
Ignore AST output of Esprima.

Only export comments and tokens. This way we don't have to JSON-encode
the large AST, saving some speed.
Comparison of old and Esprima lexer.

Unfortunately Esprima is way slower :(
Add separate speed test for EsprimaTokenizer.
Optimize use of V8 engine.
Bring string values over from V8 through JSON.
Switch all V8-import back to JSON.

It's simpler and just as fast.
Merge branch 'master' into esprima-lexer
Require esprima to be inside jsduck dir.
Add therubyracer to jsduck gem dependencies.

It will provide the 'v8' package.
Merge branch 'master' into esprima-parser
New JS parser prototype that uses Esprima.js
Benchmarks to compare EsprimaParser with JsParser.

Currently the tests show that esprima-version is 2x slower.

Times for parsing all of sencha touch source files:

JsParser:      3.5s
EsprimaParser: 6.6s

Also... the JsParser is now switched back to using the old Lexer,
not the esprima-one.