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.