TextDocumentLayout: Fixed finding paragraph by line index.
TextSpan: Added Append() method for convenience.
Paragraph::Remove() Optimized and fixed various situations...

... where adjacent TextSpans with the same style should be merged.
ParagraphLayout: Off-by-one error in LastOffsetOnLine()
TextDocumentLayout: First/LastOffsetOnLine() forgot to convert...

... back from paragraph local offsets to document global offsets.