fix ArrayLiteral elision according to ECMA 262, 5th ed., 11.1.4
Wrap initializer code in generated parsers into |{...}|

Initializer code is usually indented and this indentation is carried
over to generated code. This resulted in a piece of indented code in the
middle of the parser.

This commit wraps initializer code in |{...}|, which makes indentation
in generated parsers look a bit more natural.
Inline functions extracted just because of JSHint

Rather than extracting functions just because JSHint complained about
defining functions inside a loop, let's inline then and silence the
warning.
Standardize on 3 spaces before // comments
s/head/first/ & s/tail/rest/ in a testcase

Makes the testcase in sync with example grammars.
Change module exporting style

Modules now generally store the exported object in a named variable or
function first and only assign |module.exports| at the very end. This is
a difference when compared to style used until now, where most modules
started with a |module.exports| assignment.

I think the explicit name helps readability and understandability.
Utility functions cleanup: Split lib/utils.js

Split lib/utils.js into multiple files. Some of the functions were
generic, these were moved into files in lib/utils. Other funtions were
specific for the compiler, these were moved to files in lib/compiler.

This commit only moves functions around -- there is no renaming and
cleanup performed. Both will come later.
Utility functions cleanup: Cleanup lib/utils/arrays.js
Utility functions cleanup: Cleanup lib/utils/objects.js
Utility functions cleanup: Cleanup lib/utils/classes.js
Utility functions cleanup: Cleanup lib/compiler/asts.js
Utility functions cleanup: Cleanup lib/compiler/visitor.js
Utility functions cleanup: Cleanup lib/compiler/javascript.js
Fix a bug in |stringEscape|

The |stringEscape| function both in lib/compiler/javascript.js and in
generated parsers didn't escape characters in the U+0100..U+107F and
U+1000..U+107F ranges.
generate-javascript.js: s/generateJavaScript/generateJavascript/

This makes the variable name in sync with pass name in lib/compiler.js.
Formatting
Convert spec/README to Markdown

It will look nicer on GitHub.
Convert benchmark/README to Markdown

It will look nicer on GitHub.
Rewrite spec/README.md

More clarity, better grammar (hopefully).
Rewrite benchmark/README.md

More clarity, better grammar (hopefully).