Convert legacy span directions into levels.
Move BiDi Level to separate module.
Add helper function for run-length encoding.
Generalise text from SpanData for other tests.
Prepare for extending ProtoRun.
Consolidate tree types into one.
Handle ancestor boxes in rich layout.
Add ancestor boxes to interface.
Implement finding box edges.
Use ResolvedBox when flattening trees.
Separate WithSpan for sharing with other modules.
Implement piecewise paragraph construction.
Add public Rich interface.
Add basic support for Rich layout.
Define tree for structuring paragraph content.
Define BoxOptions and TextOptions for formatting.
Differentiating the two record types reflects the fact that the root
inline box cannot be styled but its text contents can.
Separate interface-independent layout algorithm.