Detect IE10's buggy range client rects for an empty node

IE reports 0 client rects for an empty element, even if the
element has pre-specified fixed dimensions.

As part of this, a more advanced quirk detection system has been put in
place to make these easier to track.
Virtual selection demo

Implementation notes
* Rounds selection to the closest offset
* Resets the selection on mouse down
* Changes the mouse cursor on mouse down to indicate text selection is occurring
* Only consider text nodes as valid for highlighting
* Copes with vertical and horizontal scrolling
* Utilised advanced Chrome & Firefox point-to-caret translation
* WORKS WITH IE10

Test-related Features
* Region to test browser-based selection vs. virtual selection

Gloriously nasty implementation of caretPositionFromPoint for IE
Hacks to make virtual selection work (IE compatibility)