Changed AST structure and added LFG stuff

Now, the AST structure is more uniform and sensible, making the POS-tag-like
(LexicalCategory) nodes reified in favor of the token-holding Leaf nodes. This
sacrifices no generality as long as we just use the class Terminal for creating
a grammar with terminal symbols. It also made some of the code simpler and
easier to read. It will help the most, however, in the code that annotates and
solves the ASTs for LFG.