PEG.js grammar: Disallow empty sequences

Empty sequences are useless and they only confused users. Let's disallow
them.
PEG.js grammar: Fix how |rawText| is created

Before this commit, the value of the |rawText| property of "class" AST
nodes was created in a hackish way from processed input and it didn't
always exactly represent the actual input text.

This commit changes the code so that the value of the |rawText| property
is created using the |text| function. This is a clean way which also
resolves the exact representation problem.
PEG.js grammar: Fix line continuation handling

Before this commit, a line continuation (backslash followed by a line
terminator character) contributed a character to a string or a character
class it was used in. In JavaScript and many other languages, line
continuation doesn't contribute anything.

This commit aligns PEG.js line continuation behavior with JavaScript.
PEG.js grammar: Capitalize rule names

When rule names are capitalized, it's easier to visually distinguish
them from non-capitalized label names. Moreover, I use capitalized rule
names in all my grammars these days.
PEG.js grammar: Change whitespace handling

Before this commit, whitespace was handled at the lexical level by
making tokens consume any whitespace coming after them. This was
accomplished by appending |__| to every token rule.

This commit changes whitespace handling to be more explicit. Tokens no
longer consume whitespace coming after them and syntactic rules have to
cope with it. While this slightly complicates the syntactic grammar, I
think it's a cleaner way. Moreover, it is what JavaScript example
grammar does.

One small side-effect of thich change is that the grammar is now
stand-alone (it doesn't require utils.js anymore).
PEG.js grammar: Inline trivial character rules
PEG.js grammar: Replace several smaller comments by a big initial one
PEG.js grammar: More JavaScript-like rules for skipped elements
PEG.js grammar: More JavaScript-like rules for strings/literals/classes
PEG.js grammar: More JavaScript-like rules for identifiers

This change has two side effects:

  * Label names can no longer be JavaScript reserved words.

  * |$| is allowed again in label names. However, because of the
    preference rules, names starting with it will be usually parsed as a
    text operator followed by another identifier (denoting a rule
    reference or label name).
PEG.js grammar: Improve code block handling

  * Rename the |Action| rule to |CodeBlock| (it better describes what
    the rule matches).

  * Implement the rule in a simpler way and move it after more basic
    lexical elements.
PEG.js grammar: Extract the |AnyMatcher| rule

This makes the |Primary| rule a bit more tidy. Also, matching the |.|
character really belongs to the lexical part of the grammar, next to
literals and character classes.
PEG.js grammar: More JavaScript-like initializer/rule separation

Initializer and rules are now separated in a similar way as JavaScript
statements -- either by a semicolon or a line terminator, possibly with
whitespace and comments mixed in.

One consequence is that the grammars like this are now illegal:

  foo = "a" bar = "b"

A semicolon needs to be inserted between the rules:

  foo = "a";bar = "b"

I consider this a good change as the now-illegal syntax was somewhat
confusing.
PEG.js grammar: Append |Expression| to expression rule names

Makes the rule names a bit longer but also clearer.
PEG.js grammar: Extract the |ActionExpression| rule

Having it separated from the |SequenceExpression| rule is cleaner and
more logical.
PEG.js grammar: Extract the |RuleReferenceExpression| rule

This makes the |Primary| rule a bit more tidy.
PEG.js grammar: Extract the |SemanticPredicateExpression| rule

Semantic predicates are kind of |PrimaryExpression|, not kind of
|PrefixedExpression|. Therefore I extracted a rule for them and
referenced it from the |PrimaryExpression|.
PEG.js grammar: Make rules with operators more generic
PEG.js grammar: Formatting & comments
PEG.js grammar: Add limitations

The limitations are inherited from the JavaScript example grammar.