PEG.js grammar: Add missing semicolon

Fixes the following JSHint error:

  lib/parser.js: line 108, col 54, Missing semicolon.
PEG.js grammar: Fix line continuation handling in character classes

Before this commit, line continuations in character classes contributed
an empty string to the list of characters and character ranges matched
by a class. While this didn't lead to a buggy behavior with the current
code generator, the AST was wrong and the problem could have caused bugs
later.

This commit fixes the problem.
PEG.js grammar: Improve the |Code| rule a bit

Instead of matching segments between blocks character by character,
match them as a whole. Also align the style with other similar rules
(e.g. the comment ones).
JavaScript example: Fix parsing of statements

Fixes a problem where statements starting with a reserved word produced
errors like this:

  Reserved word "return" can't be used as an identifier.

The problem was in a wrong ordering of choices in the |Statement| rule
together with aggressive reserved word detection in the |Identifier|
rule.
JavaScript example: Fix automatic semicolon insertion

Fix parsing of inputs like this:

  foo() // comment
  bar()
Add support for collecting all errors, warnings and notes in one pass of compilation.
Add to |options| new parameter: |collector|, that is object with following functions:
- emitFatalError(...)
- emitError(...)
- emitWarning(...)
- emitInfo(...)

By default, |emitFatalError| and |emitError| throws |GrammarError| with all arguments, passed to them; |emitWarning| and |emitInfo| do nothing.
Fix some errors.
Now errors collected by the compilation stage (check, transform, generate etc.)
Also incorporate #208.
|GrammarError| captures stack in v8.
Fix small error and allow user pass they problem collector.
Fix usage function name from |options.collector| instead of function itself.
Add error message to |GrammarError|.