Add First Set Computation

Now correctly (to my knowledge) computes the first sets for each symbol. Also
correctly fills in the nullable field on symbols as it goes along. Still needs
the follow sets to be computed.

This is pretty much a direct port of the code from the original Parsegen.