These types are allocated for every state transition in the parser (State)
or every character that's read (character reference) and are fairly
compact. Turning them into structs will remove a significant number of unnecessary
allocations in the parser.
For our razor code generation benchmark, making these changes yields about
500-750ms of speedup (out of 40000ms) or about 1%.