Add some DomUtils.rangeContainsNode tests to ensure correct behaviour
Fix direct styling for selections that contain links

Usually the limits for a selection reference the first or last
text nodes. When the first text node is migrated to a new styled span,
the range limits will suddenly not include the following siblings that
should also be migrated. This causes moveToNewSpan to produce more
spans than necessary.
Adjust container re-use checks for applying direct styling

If the text node being considered was the 3rd child node (or later)
and the 1st node in the container was an unstyled text node, the
domUtils.rangeContainsNode check could incorrectly report the
parent container as suitable for re-use.
Brush over DomUtils.mergeTextNodes and add some unit tests for it

the comment from 6081c1bc, "in chrome it is important to add node1 to node2." was mistakenly inversed, fixed
Merge any as result neighbouring textnodes on downgrading text:s