Fixed an off-by-one error selection error.

If the user tried to select text when there was no label nearby, they
would be unable to select the last character of a text node. This has
been fixed.

Note that this would happen essentially when labels are present but
not displayed. Not a common case with the generic mode.
Improved the caret movement logic

Deals with cases where an element's editable content is wrapped by
more than one element. Introduced ``_start_wrapper`` and
``_end_wrapper`` classes to mark the wrapping elements.
Use the _indexOf alias.
Modified tests to use firstChild and lastChild rather than childNodes[].
Modified code to use firstChild and lastChild rather than childNodes[].
Replace usages of `$.fn.get()` with [] as much as possible.
Reorganized the positionRight and positionLeft methods.
Prevent dumpCaretInfo from failing if no caret.
Better character boundary detection code.

The code now uses the positionLeft/Right functions to avoid putting
the caret in a position that cannot be edited.
Restructured the test suite to make some tests faster.
Removed an unnecessary call to $() and optimized some loops.
_blur undefines the _raw_caret.
Make setGUICaret return when the opration is a noop.
We don't need to set the caret before undo/redo.
The TODO was woefully out of date.
Fake caret: make mark permanent.

Previous versions would recreate the node used for computing the
position of the fake caret. It is now a permanent node which is added
and removed as needed.
Change the fake caret CSS before reinserting in DOM.
Improved the caret positioning on click events.
Mode now has a default implementation for nodesAroundEditableContents.

This implementation uses the newly introduced _start_wrapper and
_end_wrapper classes to determine the nodes.
Removed a left-over comment.