Reflow large lines by manipulating the tokens directly.

This algorithm takes the token stream and creates a higher abstraction
out of it. It then uses this abstraction to re-flow the tokens. This
gives us a finer-grained handling of the elements, allowing us to make
better decisions about what to place where. It actually generates two
candidate formattings and allows the current heuristic to pick the
"best" one from them.