Added completeness and coherence to FStructure
checkpoint commit, plane is landing
checkpoint but actually.
Added case classes of CNFProductions for empties
Massive changes. Everything is different.

I introduced "tags" for ASTs as well, and completely revamped the parser for CNF
grammars. Really, it should not be called CNF, but 2NF, because that's what I'm
doing. There's also a kind of extension for lexical categories.
EMPTY PARSING IS GO

Everything seems to work as expected. There were a few typos and match errors
and stuff but the logic seems to work. This is amazing. Incredible. Ridiculous,
even. Now to refactor...