Revise TextBlock cursor to be more like other text functionality

The cursor code was the first bit I wrote after the flowing layouts, and it missed out on some generalization that came along with the link spanning and other work after it. This PR reconciles that.

The main purpose here is that `FittedTextBlockCollection` is the central class that knows about calculations regarding the multiple layouts that comprise a `TextBlock`. Everything about which layout to draw things in, where to position things relative to those, all belongs naturally (to me at least), in that class.

The `TextBlockCursorPainter` remains as a separate class for doing some basic management of the cursor element and movement, but most of the hard calculation now just leans on `FittedTextBlockCollection`.

This resolves #630.