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 !.
Unified nonterminal failure tests

- Renamed tests and edited error messages for consistency.
- Added missing test cases.
- Updated tests due to introduction of ! prefix.

Another change in the syntax and usage of predicate name declaration:

 1. The *optional* name of the predicate to be defined for identifying
    the declared nonterminals must be framed with #(vector) syntax in
    addition and removal forms.

    This removes the ambiguity between meta-variable lists, productions,
    and invalid predicate names; predicate now has a clearly defined,
    unique marker. This change should improve error messages and simplify
    the parser implementation.

 2. Predicate cannot be redefined in extension modification forms. Now
    modifications can only edit meta-variable and production lists.

    Originally, this was intended to be a workaround for nonterminal
    predicate implementation: each nonterminal in each language should
    have had its own predicate that is distinct from other predicates--
    even for extended languages. That's why the user might have needed
    a facility to redeclare the predicate to be able to use it for the
    extended language.

    But in the end this seems to be dumb hack. It should be the problem
    of the nonterminal predicate implementation to be able to be able
    to match both original and extended languages so that redefinition
    won't be necessary.
Documented structure error messages

I have reviewed and unified all error messages and placed them in the
README file. At last they can be viewed in one place.

Also, error messags for toplevel clauses were made more elaborate.
Updated and unified expected error messages

- Updated error messages to match ones in README
- Updated toplevel test to keep up with README

Also, I have pushed more work on toplevel partitioning: they now
check the structure of (extends ...) etc. clauses and extract
the names. Result is either #f or (name)--to catch things like
(extends #f) which must not conflict with our 'not specified #f'.
Merged branch 'partitioning-tests' into 'partitioning'

I believe, the tests are in order now so I can continue developing
the partition implementation for them.
[!] Reverted to stable Chibi revision

Current Chibi Scheme tip is failing to build due to changes
introduced by d569bc9716317ac0f38826ee06feeff5656631f8,
so I am reverting to some older stable revision.

When Alex resolves the issue, the build can be moved back
to the tip either by reverting this commit, or by changing
CHIBI_REVISION to 'tip'.