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.
This is now comparing two objects rather than two bools