Fix style buttons' behavior when selecting the two positions around an annotation

This patch makes the selection info caching logic also save the information for selections which contain no text elements, i.e. of the kind in #560. This gets rid of the annoying all-buttons-activated behavior.

Next, for sensible editing, direct text styling is disabled for such selections, while direct paragraph styling is left enabled.

The widgets are accordingly subscribed to these states.
Yes, I'm a bit torn about this, but leaning towards having just one method.

Somehow having two functions feels a bit 'lopsided'. Also opens the question about supporting various states (some things enabled, some things disabled), and addressing how this behaves when the regular isEnabled boolean is true/false.

I think the current change is a small price to pay to avoid the added complexity of such 'layered' enabled states.