Allow trimmed whitespace to generate empty fragments.
BREAKING: Output may now contain more fragments with zero glyphs,
representing runs of whitespace that was trimmed away. These runs may
also start a box at the end of a line, instead of the beginning of the
next line.
BREAKING: Trimmed whitespace now affects line height.
Internally allow splitting texts at endpoints.
This is required in order to preserve a hard line break at the end of
the input.
Fix style: white space around operators.
Mark some lists as explicitly non-empty.
Remove collapsible spaces at beginning of lines.
Implement trimming spaces at end of lines.
Move non-public modules into Internal namespace.
Minimise working with Data.Text.Internal.