Don't discard highlighted annotations when merging paragraphs

All text nodes that are children of grouping elements should be counted
as ODF content.

Fixes #666.
Re-highlight annotations whenever an edit occurs.

* To make it less expensive, a method has been added
to AnnotationViewManager to refresh not all annotations
but only the highlights.

* This is used as a scheduled redraw task inside SessionView
to not make it a CPU hog.

* The destroy mechanism for SessionView has been restructured
to accomodate multiple asynchronous destructors.
Merge pull request #667 from peitschie/odf-empty-fixup

Don't discard highlighted annotations when merging paragraphs
Fix closure annotations for DomUtils.getNodesInRange and
OdfUtils.getTextNodes.
Never completely re-wrap annotation highlights, only wrap
those text nodes which should be within but are as of yet
unhighlighted.
Merge pull request #663 from adityab/annotation-rehighlight

Re-highlight annotations whenever an edit occurs
Fix cursor positions after modifying a hyperlink

Adding or removing containers can leave the cursor in a non-step
position.

Fixes #650.
Show complete hyperlink text when selection is collapsed
Re-arrange editorHyperlinks widget code
Only calculate hyperlink text just prior to displaying edit dialog

Calculating hyperlink text is extremely expensive. To avoid a lot of
unnecessary work, only calculate the text prior to displaying the edit
dialog.
Select and update the current hyperlink when selection is collapsed

When the current selection is collapsed within a hyperlink and an update
occurs, the selection will now be expanded to the hyperlink bounds and
updated.

Fixes #490.
Expand selection to cover newly inserted hyperlink

Mimicking LibreOffice's behaviour here, when a new link + associated
display text is inserted, immediately expand the selection to these
bounds.

This change makes add & edit link behaviours consistent, as the complete
hyperlink is always selected after the edit dialog is closed.
Use the current hyperlink as a placeholder for the display text

This helps clarify that if no display text is specified, the link text
will be used instead.
Merge pull request #655 from peitschie/hyperlink-fixup

Various fixes to hyperlink editing
Ensure various places always have a valid root element

There is a small edge between the canvas border and the office:text
element that the user can click in. Doing this returns null for the root
element (as it is the container that contains the office:text element),
causing an unhandled null reference exception to occur in some
circumstances.

Fixes #664.
Merge pull request #665 from peitschie/dbl-click-fix

Ensure various places always have a valid root element
Add original Mozilla licence notice to relevant viewer files.
Correct the copyright year range to 2012-2014 in the relevant viewer files.
Merge pull request #669 from adityab/improved-viewer-attribution

Improve viewer license attribution
Replace inflating code in RawInflate.js with code from the pako project