Massive refactor

I separated grammars and parsers, which are different things. This difference comes to light the
most clearly because of the fact that I have now implemented different parsing strategies for the
same kind of grammar (particularly CNF...er...2NF).

I also put all of the "parsable" related stuff into its own set of a couple subpackages. The extra
layer of abstraction from the Parsable trait in the syntax package isn't necessary and was getting
in the way of the organization of the code, so I got rid of it. It may be appropriate for a more
powerful abstraction to come along later once I have some more features/formalisms implemented.

Oh yeah and... the tests haven't been updated. The core code compiles, but the tests don't, so there
may be some problems. The next issue is to fix all of the tests.