Specs cleanup: Split specs into unit and API specs

Unit specs are unit tests of internal stuff. API specs are tests of the
user-visible APIs and behavior.

I think it makes sense to make this distinction because then the public
API line is more clearly visible e.g. when using the specs as
documentation.
Specs cleanup: Rename & simplify |varyAll|

Rename |varyAll| to |varyOptimizationOptions|, because that's what the
function does. Simplify as we don't need a fully generic solution.
Specs cleanup: Implement PEG.js API specs

Some parts were previously part of generated parser specs, these were
moved.
Specs cleanup: Implement plugin API specs
Specs cleanup: Implement generated parser API specs

The generated parser API specs are mostly extracted from
generated-parser.spec.js, which got renamed to
generated-parser-behavior.spec.js to better reflect its purpose.
Require Node.js >= 0.10.0

Travis CI builds with Node.js 0.8.x started to fail:

  https://travis-ci.org/dmajda/pegjs/jobs/26691570

Rather than investigating what's wrong I decided to stop supporting Node
0.8.x. Node.js 0.10.x is here for over a year, which should be enough
time for everyone to upgrade in the fast-paced Node.js world.
Simplify visitors by providing default visit functions

The |visitor.build| function now supplies default visit functions for
visitors it builds. These functions don't do anything beside traversing
the tree and passing arguments around to child visit functions.

Having the default visit functions allowed to simplify several visitors.
Remove useless test in the |reportLeftRecursion| pass

Empty sequences are not allowed anymore so we don't have to test for
them.
Specs cleanup: Simplify compiler passes specs

After 898a7b5a2d0438aecfca9d0ec548ff60fcb00747 the specs mostly tested
the visitor implementation, not actual code in the passes.
Reordering in visitors and their specs

Reorder visiting functions and their specs to more closely match
ordering used in the PEG.js grammar.
Specs cleanup: Use raw node types in |generateBytecode| specs

Use raw node types instead of humanized node names in |generateBytecode|
specs. This corresponds more closely to the level the specs are written
at.
Add two missing blank lines
Merge remote-tracking branch 'remotes/upstream/master' into ranges

Conflicts:
	lib/compiler/passes/remove-proxy-rules.js
	lib/compiler/passes/report-left-recursion.js
	lib/compiler/passes/report-missing-rules.js
Merge branch 'ranges' into ranges-proposed-syntax

Conflicts:
	spec/compiler/passes/remove-proxy-rules.spec.js
	spec/compiler/passes/report-left-recursion.spec.js
	spec/compiler/passes/report-missing-rules.spec.js
	spec/unit/compiler/passes/generate-bytecode.spec.js
Merge branch 'ranges-proposed-syntax' into ranges-delimiter-proposed-syntax

Conflicts:
	lib/compiler/passes/remove-proxy-rules.js
	lib/compiler/passes/report-missing-rules.js
	spec/compiler/passes/remove-proxy-rules.spec.js
	spec/compiler/passes/report-left-recursion.spec.js
	spec/compiler/passes/report-missing-rules.spec.js