Refactor Parsegen

This sketches out the intentions for the refactor. Most of the important bits
are implemented except for the printing (some kind of formatter objects are
probably required) and the calculations of the first and follow sets.