mouse-selecting TextBlocks mostly works!

implement TextBlock::seek to consolidate all the children and do
cursor.seekHoriz() every time, recording the anticursor's position on
the initial mousedown, otherwise re-creating the anticursor as a Point
(which may require splitting up a TextPiece).