Make Range.prototype.insertNode more correct

This should now always leave the DOM in a consistent state: if the
operation cannot be fully completed, we abort without making any changes
to the DOM.  In particular, we now don't split text nodes in this case.
Re-fixes <https://www.w3.org/Bugs/Public/show_bug.cgi?id=17541>.