The stack has alternating states and symbols. I had groups a state
with the following symbol as the first thing pushed is a state and the
next is a symbol.
It works much better to group the other ways. First we push just state zero.
Then we push some symbol and the state which 'goto' leads to.
In particularly this keeps the 'shift' that happens after "reduce"
quite separate from the 'shift' that happens when the look-ahead is
shifted in. Previous the post-reduce shift was stealing the indent
information that should have stayed in the look-ahead buffer.