~jaro/balkon

ref: 8ec0fe09ec568b7e5309df9dc37cd3c0f7635283 balkon/src/Data/Text d---------
Use ICU to find line break boundaries.
Implement line breaking on code point boundaries.
Use top edge for placing lines.
Implement run splitting.
Lay out Runs independently of Spans.
Store span index in ResolvedSpan.
Link to Span using a generic wrapper.
Calculate fragment position continuously.

This merges the various "arrange" functions into the layout functions,
which will be used to detect overflows for line breaking.
Implement absolute line heights with half-leadings.
Calculate "normal" line height and pen position.
Use CSS-compatible line height settings.
Upgrade Fragment to contain pen position.
Use CSS3 terminology for fragments and containing block.
Avoid reimplementing Data.Text.Lazy.fromStrict.
Implement "plain" interface.
Use Rect in "plain" interface.
Create "plain" interface.
Add module for working with rectangle coordinates.
Separate modules.
WIP version with WIP interface.