implementing the @cache + @nocache annotations; we had @nocache per rule but now we have both per rule AND the globally active @cache(all), @cache(none), @nocache(all) and @nocache(none), which simplify annotating grammars where most rules need to be cached (or not cached).

Note: @nocache(none) is equivalent to @cache(all), etc., of course.
fix for parser generator crash in new cache/nocache attributes' code
Mark |parse| and |SyntaxError| as internal identifiers

The |parse| function and the |SyntaxError| exception were meant as
internal, so let's mark them as such.
Expose the parser object in action/predicate code

The action/predicate code didn't have access to the parser object. This
was mostly a side effect actions/predicates being implemented as nested
functions, in which |this| is a reference to the global object (an ugly
JavaScript quirk). The initializer, being implemented differently, had
access to the parser object via |this|, but this was not documented.

Because having access to the parser object can be useful, this commits
introduces a new |parser| variable which holds a reference to it, is
visible in action/predicate/initializer code, and is properly
documented.

See also:

  https://groups.google.com/forum/#!topic/pegjs/Na7YWnz6Bmg
Clarify initializer documentation

Make it clear that there is only one initializer in the whole grammar.
The previous formulation could have been understood to mean that there
can be an initializer for every rule in the grammar.

Fixes #82.
Update example arithmetics.pegjs, make it work
Merge pull request #252 from chunpu/patch-1

Update example arithmetics.pegjs, make it work
- tweak the test/benchmark runner to queue each test iteration separately and allow for a little 'breathing space' (1 msec delay) between individual runs; this does not affect the timing measurement.

- tweak the test/benchmark runner to pass the runner state as an additional parameter to the user-specified runner hooks/callbacks; this enables user code to, for instance, not only report runtime averages over N iterations, but also calculate time variance across individual iterations and thus produce not only an average but also a sense of 'accuracy of measurement' by listing the variance. Next to that, passing the state object to the hooks/callbacks also allows user code in these to collect and report on parser statistics as the parser object will be available via state.parser and hence user code can obtain easy access to getStatistics and other PEG parser APIs.
do not include the rule NAME with each rule but rather its index number, plus provide the new parser.getRuleNamesIndexTable() API which assists users in mapping these rule numbers to actual rule names. This is the initial step-up towards enabling the PEG parser generator for production use where 'encrypted' output is required, i.e. where we intend to strip off the index-to-rulename index table for both space and information reduction purposes.
tweaked the grammar to CONDITIONALLY (options.includeRegionInfo) execute the region() code: it turns out region() is quite costly and this info is only required under 'debugging' circumstances. Tweaked the benchmark web page to enable users to select whether they want the region() code to run or not.
Merge remote-tracking branch 'remotes/dmajda-original/master'

Conflicts:
	README.md
	lib/compiler/passes/generate-javascript.js
	lib/parser.js
follow the 'local vs global' naming of the rest of PEG by prefixing our own new functions with `peg$`.
regenerated parser