Reduce GC load by batching calls to String.fromCharCode

Though string concatenation is theoretically faster, in practice
the myriad of calls to String.fromCharCode still seems to create
a lot of waste and cause more GC cycles. Batching these up using
an array and String.fromCharCode.apply produces roughly a 30%
speed-up in most browsers when loading the 1000page.odt document.

Results from benchmark, 1000page.odt:

Chrome 31.0.1650.48
Before: 1953ms
After:	1450ms

Safari 6.1 (7537.71)
Before: 1670ms
After:	1374ms

Firefox 25.0
Before: 2056ms
After:	1722ms
Use local variables for commonly accessed globals

On Chrome & WebKit based browsers, looking up constants on
the Node and NodeFilter classes are extremely expensive. To
avoid this, these are cached for local use in places that have
very large, tight loops.

* Don’t ask for currentNode multiple times when possible
Merge pull request #184 from peitschie/cold-start-perf

Improve document loading and position iteration speeds
Replace references to non-standard Range.comparePoint

Range.comparePoint is unsupported by IE10
Don't use text nodes as tree-walker roots (IE compatibility)

IE10 will throw an exception if the root passed
into a tree walker is a text node.
Ensure all arguments are passed to the tree walker (IE compatibility)
Restore focus to canvas without clearing selection in IE10

This also requires the next focus event to be suppressed after modifying
the selection
Bind window-related events on direct element as well (IE compatibility)

These events will not bubble up to the window if consumed by the canvas
element.
Detect IE10's buggy range client rects for an empty node

IE reports 0 client rects for an empty element, even if the
element has pre-specified fixed dimensions.

As part of this, a more advanced quirk detection system has been put in
place to make these easier to track.
Ensure Node.insertBefore is called with null, not undefined (IE compatibility)
Use Range constants for START_TO_* and END_TO_*
Hide range vs node BCR logic inside DomUtils
Merge pull request #156 from peitschie/ie10-patchset3

More IE10 compatibility fixes
Add virtual selection overlays to the same parent as the annotations view

Virtual selection overlays were being added to the office:document
element. This is inconsistent with most other non-document UI overlays.
Re-add the shadow cursor's selection on document undo

This is an interm fix until a "grown-up" undo stack arrives.

The current undo implementation for single user replaces the document
content, which causes OdfCanvas to entirely clear and replace all
children in the parent element.

Most overlays are unaffected as they are re-added when the cursor is
redraw. The shadow cursor is not an added cursor however, and so after
an undo it stops functioning.
Merge pull request #190 from peitschie/undo-shadow-cursor

Re-add the shadow cursor's selection overlays on document undo
Rename AnnotationManager to AnnotationController

also call do not call AnnotationViewManager objects not annotationManager
Merge pull request #193 from kossebau/renameAnnotationManager

Rename AnnotationManager to AnnotationController
Allow for sub-pixel rounding in client rects when detecting unscaled ranges
Fix gui.StyleHelper failing on missing referenced styles or missing default styles