Context free grammars.

A symbol is presented to the user as an int (internally, it is an object). This has several advantegous over Object symbols: 1. ordering, enumeration; 2. effciency.

TODO:
o provide moves, i.e. (prod,ofs).
o cleanup
  o some methods have overlapping functionality
  o improved method names
  o Grammar -> CFG?