Fix balancing of data in cloneSliceFromRange

Optimise case where no balancing is required by simply comparing
startNode to endNode. This solves the issues the code was having
dealing with [partial text node]/[leafNode] sibling pair, as these
don't need balancing.

Also fix the flow so that the context wrapping occurs even if the
nodes are balanced, which fixes the cases where the selection is
balanced, but still doesn't have enough context for copy/paste.

Add some test cases that were still failing in the old code.

Bug: 60117
Change-Id: I65e251c0608f0b6c214ef64e407e0f466af4eb83
Merge "Fix balancing of data in cloneSliceFromRange"