Fix span and link styling with text flowing across multiple layouts

Been a while since I started this, but picking it back up to see where I can get and wanted any early feedback folks might have.

The basic problem is that having split apart is documented in #518. The approach I've taken is to pull out a class, `FittedTextLayoutCollection` (don't love the name, so fire away with renaming suggestions) that will contain the potentially multiple layouts and properly apply operations to the right layouts and ranges within those layouts when requested.

Right now it gets the default style, the drawing command, and has the beginnings of applying the ranged styles to the layouts.

Lots I'd still like to see done. Things that I think have to happen before this PR should go forward:
- [x] Wire up to actually use the `FittedTextLayoutCollection` for the segment styling
- [x] Check for `Shoes::Span` before applying styling
- [x] Apply `Shoes::Link` styling (and additional clickable logic) within segments
- [x] Merge from master to get back up to date since this branch is a kind of stale

Other ideas that might happen along the way or could be their own PR:
- [x] Consider making a `lib/shoes/swt/text_block` directory since the number of classes in support of the flowing text is getting rather large. (entered as #629)
- [x] Extract classes such as `TextStyleFactory` and `TextFontFactory` to their own file that are currently lumped in with `TextBlockPainter` (for instance).
- [x] Use the new layout collection for treatment of the cursor placement in the text blocks too. (entered as #630)