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
Split Editor into Wodo.Texteditor and Wodo.CollabTexteditor
move fullscreen pinch-zoom into own class FullWindowZoomHelper
add product wodotexteditor
Add HOWTO-wodotexteditor.md
Add README.md to programs/editor
Create API dox for Wodo.TextEditor