In mergeRange, change the way we update range.start.offset and range.end.offset in the case of text nodes, taking into account the fact that Position now responds itself to changes to the node value.
In mergeRange, change the way we update range.start.offset and range.end.offset in the
case of text nodes, taking into account the fact that Position now responds itself to
changes to the node value.

Also in this function, make a recursive call for the parent's next sibling as well as the
parent itself. This is necessary to catch all cases of nodes that need to be merged. There
is probably a cleaner way to do this.

Use moveNode instead of insertBefore/appendChild in movePrecedingSiblingsToOtherNode
and moveFollowingSiblingsToOtherNode. These last two functions are old and need to be
removed but they are still there currently because they are used by ensureValidHierarchy.

corinthia/corinthia-editorlib,corinthia/corinthia-editorlib,corinthia/corinthia-editor,corinthia/corinthia-editor,corinthia/corinthia-editorlib,corinthia/corinthia-editorlib,corinthia/corinthia-editor,corinthia/corinthia-editor,corinthia/corinthia-editorlib,corinthia/corinthia-editor