alpha-substitution
Refactored CNF versus CFG parsing

Now the CNF parser is unaware of the Single/Chunk distinction, and it is taken
care of by a converter in parsing.cfg.package.scala.

Test code still does not compile, so there may be issues.
Fixed test code

And all of the tests pass! However, a strange problem arose with the case object
CNFEmpty. It was failing to initialize for some reason. Changing it to a
parameterless case class worked, but is slightly uglier than the object
implementation because it only needs to be a singleton. So much for generalized
algebraic data types.
Rewrote a bit of CFG code to be monadic