Prevent the backspace key from causing the browser to go back in history

The recent extraction of text manipulation functions slightly changed
the backspace key behaviour. The new interface was only returning true
if an operation was generated as a result of the call (aligning with
all other public functions on the class). This means however that back-
spacing when there is no available positions (e.g., at the beginning of
a document) was causing the browser to navigate back a page.
Allow public access to the SessionController's keyboard handler

This is the first step towards allowing external users to modify (or
disable) the built-in webodf keyboard shortcuts.
Little fixes in editor code that closure compiler did not like
Improve ImageInserter: use img.onload, drop hidden image helper after usage, call onToolDone only when really done
Improve documentation on element types.
This was a TODO in the file which has now been fulfulled.
update license header (real reason: test build trigger)
Add missing entries to the browser based test harness
Ensure PositionIterator.setUnfilteredPosition has round-trip stability

Calling setUnfilteredPosition with a result previously obtained from the
iterator should effectively resume iteration at exactly this position.
As added tests demonstrated, specifying a node with no children and an
offset of 0 was incorrectly causing currentPos to be restored to the value
of 0. This meant calls to iterator.container() would return the a different
value.
SelectionMover.countStepsToPosition will always round both the cursor and target to previous accepted position

Previous implementation would result in some unexpected behaviours when
both the cursor and the requested position were in locations not considered
valid by the supplied filter. This would cause the number of steps between
these to fluctuate unexpectedly by 1.

This change fixed the local user cursor advancement logic (odtDocument, ln 359)
so that the current user's cursor will now acurrately report it's position.
For the failing operation test, previously getCursorPosition was returning
one too many (6 rather than 5), preventing the cursor migration logic from
activating. Now, this logic incorrectly advances the cursor and attached text
node passed the annotation end in the now-failing test.
Move the cursors back into valid positions after inserting an annotation

OdtDocument.getPositionInTextNode relies on the cursors being in
accepted positions in the document. After adding an annotation, any
trailing cursors should be reset to valid positions.
Move the cursor to the start of the annotation that has been removed

Moving the cursor to the start of the removed annotation allows the
scrollIntoView behaviour to work more smoothly. Previously, removing an on-

screen annotation would likely result in the view being reset to the
cursor which was potentially offscreen at the time.

Fixes issue #33
Cope with CaretManager being destroyed while waiting for setTimeout to elapse
add a few helper functions into OdfUtils.js
Support image selection

Added a SelectType into OpMoveCursor to indicate whether it is a image
selection so we can draw our own selector after the OpMoveCursor is
excuted.

Thought about just draw the selector in the mouseup event, but it has
problem with undo image deletion. As the undo manager wouldn't know if the image
was selected before deleting.

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