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 :-)