Attempt to read selection style information even when there
is no text element/node in the selection.
Generate and cache style summary for selections that do not
contain text.

This divides the `isEnabled` information of DirectFormattingController
into two parts, `directTextStyling` and `directParagraphStyling`.

The widgets are accordingly updated.
Rename isEnabled to enabledFeatures inside DirectFormattingController.
Merge pull request #660 from adityab/annotation-selection-style

Fix style buttons' behavior when selecting the two positions around an annotation
Re-highlight annotations whenever an edit occurs.

* To make it less expensive, a method has been added
to AnnotationViewManager to refresh not all annotations
but only the highlights.

* This is used as a scheduled redraw task inside SessionView
to not make it a CPU hog.

* The destroy mechanism for SessionView has been restructured
to accomodate multiple asynchronous destructors.