Describe box edges with extensible type.
Handle ancestor boxes in rich layout.
Add ancestor boxes to interface.
Improve code readability with type alias.
Separate WithSpan for sharing with other modules.
Embed TextOptions in ResolvedSpan. SpanOptions are relegated to the legacy Plain interface, and TextOptions are now being used internally.
Separate interface-independent layout algorithm.