This fixes some bugs in the reflowing logic and splits out the concerns
of reflowing from BreakableToken.
Things to do after this patch:
- Refactor the breakProtrudingToken function possibly into a class, so we can split it up into methods that operate on the common state.
- Optimize whitespace compression when reflowing by using the next possible split point instead of the latest possible split point.