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.
Hmm... was hoping to still have *some* consistency in method names across controllers. Can you think of any other alternatives? Perhaps returning `boolean|{...}`?