Ensure the tabIndex is reset when the local user's caret is re-added after undo/redo

During the recent event & focus refactor, the tab index was being set on
initialisation of the EventManager class, and would then be unset when
the local caret was removed. This meant that no new events would be sent
to WebODF (e.g., typing) after an undo.
Remove loading of no longer used op classes in SelectionController
add a few helper functions into OdfUtils.js
Refactoring a few classes for supporting selection type

CaretManaer - hide caret if it is image selection; otherwise show and refresh cursor blinking
OdtCursor - introduce seletion type
OpAddAnnotation - reset seletion type to default after moved into annotion
area
OpMoveCursor - set the cursor's selection type
OpRemoveText - reset selecton type to default after deletion
Support image selection

*Added a ImageSelector class to draw and clear image selection

Known issue:
The selection box is moving up and down when using browser's zooming functionality. but it is working fine with the slider zoom
Only respond to the following keyboard events for image selection.
esc, tab, delete, backspace, undo/redo and copy/cut.

Note: MS Word behave differently from LO/AOO when image is selected.
When press letters,numbers&symbols, MS Word inserts the text just before the
image; where LO/AOO ignores all of them.
Also you can extend selectiion using keyboard shortcuts (e.g
shift+left) in MS Word, but you cannot do so in LO/AOO.

TODO:
Esc - deselect image
Tab - move to next frame in the document
Disable font and paragraph formating toolbar items on the editor when image is selected.

LO/AOO actually hides those options.