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.