Merged branch 'partitioning-tests' into 'partitioning'

Going for another iteration of implementation, now it's nonterminal
processing. After this the code and tests should be cleaned up, the
error messages should be unified. A profiling run won't hurt also,
because this shit is damn slow on Chibi, but I wonder whether it is
CK machine being slow, CK functions being slow, or Chibi being an
interpreter. After that partitioning should be feature-complete and
ready to be merged into master.
Implemented filtering of standalone nonterminals

All standalone tests actually pass, both success and failure ones.
Extension test expansion fails the build. Simply ignore it.

It was somewhat challenging to get the patterns for all standalone
cases in the right order. We have only one chance to match, after
that we can only verify our guess. I still have a feeling that this
is not an ideal solution, but it seems to work and cover all cases.

Also fixed the test runner to do not break on ':' in error messages.
Started implementing extension nonterminal partitioning

Implemented basic partitioning and fixed most of the failure tests.
Success tests obviously do not pass because partitioning of meta-vars
and productions is not implemented yet.

Mostly 'copy-paste and fix' implementation. Refactoring awaits...

A couple of failure tests also fail, namely: (+ ()) and (- ()) -- these
are treated valid nonterminal modifications of '+' and '-' nonterminals.
A just decision by the parser, but a bit surprising. I expected these to
be explicit additon and removal of an incorrectly described nonterminal.

Actually, a lot of tests fail because of the structural ambiguity beween
incorrect usage of lists for predicate names, meta-varible lists, and
production lists. I tend to think that introducing an explicit form like
'(productions ...)' will make things so much easier to parse.

So, it seems that I have to make a decision about deviating from the
original Nanopass syntax again.

  1) Deny usage of '+', '-', 'extends', and stuff as terminal and
     nonterminal names -- this stems from my desire to support
     implicit addition forms.

  2) Think over a simple _and_ unambiguous structural syntax for
     nonterminals that will be easily parsed.

  3) NB: there is another possible reserved keyword: 'maybe?' that
     should not be allowed to be used as a meta-varible name.
Merged branch 'partitioning' into 'partitioning-tests'

Okay. Right. Okay... I've decided.

  1. Implicit addition goes away.

  2. Modification gets is own prefix group !, like + for addition
     and - for removal.

In this way there will be no ambiguities with implicit addition forms,
and modification will be a regular and consistent part of the syntax.
And it should be easier to parse and identify such forms.

I will decide on the 'predicate-variable' ambiguity of modifications
while doing these changes. And also on '...', 'maybe?', and other
keywords of the production syntax.
Removed tests for implicit addition

There is no distinction between implicit and explicit additions,
so the obsolete tests got removed, and the names of the files and
tests got corrected.
Introduced ! as modification syntax prefix
Unified terminal failure tests

- Made file naming and error messages consistent.
- Added missing test cases for some syntaxes.
- Added more test-cases due to introduction of !.