Alpha-rename PBody to PString.
Moved comment with left-recursion elim algorithm above its procedure.
Fully compiling first-set computation.  But no tests yet.
Revised representation of StaticGrammar to carry the associated symbol
registry, so that I can create test inputs for e.g. first set
computation.

  -- This revision prompted the introduction of various traits to
     coerce a StaticGrammar to a Grammar, depending on what the needs
     of the client are (namely immutable borrowing or mutable
     ownership).

Revised example input generation methods to produce ~-allocated
StaticGrammars rather than stack-allocated ones.

  -- (I need to look at the code generation strategy that is used
     here; I have seen it asserted that this is unnecessary for
     avoiding copy-work, as large structures will supposedly be passed
     by by-address, not by-register; I just want to wait to confirm
     that this actually happens even when returning a structure.  For
     now, the tildes do not bother me so much.)

Added initial sketch of structure for testing first set computation.
Added sample runs of first set computation.
Refactored first-computation exercise code.  Added few more examples.
Put in follow-set computation.
Follow set computation "tests".
Might as well get more fine-grained timing info.