Set paragraph style op will clear style name if blank, undefined or null

Makes the op more robust to different types of serialisers, as some will
use null or undefined if the property is present but empty.
Slight performance improvement for StepIterator.roundToClosestStep

Fetching the offset for a position can be prohibitively slow in some
cases. Avoid storing this value until absolutely necessary.
Enable isFailing flag for transformation tests
Split CollapsingRules out of OpRemoveText

This functionality will be shared with the soon-to-exist merge paragraph
operation.
Implement OpMergeParagraph

In order to improve the OT-ability of text and paragraph removal
with other operations, the merge behaviour has been extracted.

The logic for building up the necessary remove operations has
been encapsulated in TextController for now as all uses pass
through this point still.
Cleanup leading/trailing insignificant whitespace on paragraph merge

Failing to clean up these empty whitespace blocks will cause them to
unexpectedly become significant whitespace after a merge is performed.
Implement OT support for MergeParagraph
Merge pull request #605 from peitschie/merge-paragraph

Implement OpMergeParagraph
Log the stack trace when a LoadingQueue task throws an error

Fixes #658.
Merge pull request #659 from peitschie/log-fixup

Log the stack trace when a LoadingQueue task throws an error
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
Don't discard highlighted annotations when merging paragraphs

All text nodes that are children of grouping elements should be counted
as ODF content.

Fixes #666.
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.
Merge pull request #667 from peitschie/odf-empty-fixup

Don't discard highlighted annotations when merging paragraphs
Fix closure annotations for DomUtils.getNodesInRange and
OdfUtils.getTextNodes.
Never completely re-wrap annotation highlights, only wrap
those text nodes which should be within but are as of yet
unhighlighted.
Merge pull request #663 from adityab/annotation-rehighlight

Re-highlight annotations whenever an edit occurs