Removed pointless outer loop from LR0Generator.closure() and added documentation comments.

This is just to leave cleaner code.
Changed LR0Generator's closure to use the faster version now used in LR1Generator's closure.
Improved the performance of the core LRGenerator algorithm by eliminating redundant calls to transition(). In one large grammar, this was found to cut the calls to transition() to only 1/6 of what we were doing with the naive algorithm.
Minor performance enhancement improving the performance of Production.equals() for non-equal productions whose hash has already been evaluated.