CursorManager: Refactor selection code to work for TextInfos that aren't offset based.
The previous code assumed that the TextInfo implementation allowed moving the end before the start. OffsetsTextInfo handles this and normalises the result so that end > start. However, TextInfos such as MozillaCompoundTextInfo and Microsoft Word don't handle this.
This fixes backwards selection in Kindle and Microsoft Word browse mode.