Make cursor adjust over links

* fixes #879
* first two commits were needed to get all of this wired up
* required to wire up `text_fragments` (such as spans or links)  so that they know the text_block they belong to in order to get their visibility from there
* implication is that the visibility of a text fragment is defined by whether or not its parent text_block is visible, which I think is sensible
* May benefit from a more general approach, e.g. it is currently only available `Link`, but could also be made available for `Span` or `Text`.

Further comments inline

Would like a review :-)
Definitely bugged by this method, but it definitely isn't an easy one to improve. I suppose setting the parentage (`text_block` and `parent_text`) could be pushed into the `Shoes::Text` class, add a method for the range calculation... but it still doesn't feel like it clarifies things much. I documented a similar gripe in #614.