Fix for #91 - Turn some commonly allocated types into structs

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%.
Why default the `_hasOutput` to true when the `_output` doesn't actually have a value?