Changed LrItem into a struct. This provides a decent speedup, especially for the compiler-generated LrItem.CompareTo function.
Profiling shows 90% of our execution time is spent in the Set.contains call on line 130 of Lr0.fs, so we'll optimize even more by creating a special LrItem implementation just for LR(0) so we don't waste any space on the lookahead field.