Add GRAMMAR structure and dependencies between grammars

* Partly based on menschenkindlein's
  implementation
  (Menschenkindlein/esrap@63baec4e20591d3c1517fae88a364de8a39ebb12).

* Grammar objects are a bit like CL packages:

  * they have a name and optional :DOCUMENTATION
  * they can :USE other grammars
  * they act as containers for rules
  * redefinition is allowed and preserves existing rules

* Changed interface:

  * GRAMMAR-NOT-FOUND-{ERROR,WARNING} [condition]
  * RULE-NOT-FOUND-{ERROR,WARNING}    [condition]

  * GRAMMAR-NAME                      [function]
  * GRAMMAR-DEPENDENCIES              [function]
  * GRAMMAR-RULES                     [function]

  * DEFGRAMMAR                        [macro]
  * IN-GRAMMAR                        [macro]

  * MAKE-GRAMMAR                      [function]
  * FIND-GRAMMAR                      [function]
  * (SETF FIND-GRAMMAR)               [function]

  * DEFGRAMMAR, DEFRULE and PARSE signal full warnings at compile time
    when constant references to grammars or rules cannot be resolved.

  * IMPORTANT: In addition, all user-visible -rule functions take a
    grammar designator as their first argument.

* Changed implementation:

  * DEFGRAMMAR, IN-GRAMMAR and DEFRULE produce code which is evaluated
    at compile-, load- and runtime. This is necessary in order to be
    able to define and use a grammar in the same file.

  * FIND-RULE traverses used grammars to find the requested rule.

  * The new functions UPDATE-RULE-DEPENDENCIES, RECOMPILE-CELL are
    called after adding/removing rules/used grammars to update
    dependencies and recompile rules.

  * Rule dependencies are expressed in terms of referencing rule
    cells, not symbols.

* New tests for grammar objects and related lookup and redefinition
  issues have been added.

* Documentation has been extended.

* Examples:

  * example-sexp.lisp now uses a separate grammar called SEXP

  * example-sexp-xml.lisp contains a new grammar called XML which uses
    the SEXP grammar to demonstrate grammar dependencies (originally
    written by Menschenkindlein)