Testing: enhance MockSelection to provide a true commonAncestorContainer

Earlier, the commonAncestorContainer was always set to the root of the
whole fixture. However, this does not correspont to the specification
of Range.commonAncestorContainer and what real browsers do.

I have adjusted the mock object to behave more like real browsers.
Added a bunch of Range test cases

to test for the problem causing #235.
(This will break the tests, and it's intentional, since the code is broken, too.)