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.
I think I would prefer two functions, rather than making ``isEnabled`` return a complex obj. Every other controller in the system returns a bool from this... it seems unexpected to have this one re-use the same function name with a different return type.

Thoughts?