Always update caret location even if it isn't visible

Though the caret visibility may be set to hidden, the caret still has
a client rectangle that can be accessed. It is important to keep this
up-to-date so the scrollIntoView logic works on a range selection even
when blinkOnRangeSelect is false.
Put caret register/remove functions side-by-side for clarity
Bind events directly to caret functions

The Caret itself already has logic to only perform expensive updates once
per redraw. There is no performance gained by CaretManager duplicating
this logic as well.

In addition, bind to any processing batch end. This is because any
type of edit may cause the caret to be pushed off screen including
adding annotations, splitting paragraphs, deleting text, modifying a
paragraph style etc. the most straightforward way to ensure the caret is
up-to-date is to check it's visibility on every edit operation.

Fixes #765
Caret no longer needs to be hidden between redraws

Removing layers of timeouts in the CaretManager mean the caret no longer
flickers badly when transitioning between large and small sizes.

See PR #369 for details about why this workaround was put in originally.
Merge pull request #767 from peitschie/always-update-caret

Always update every caret after processing a batch of ops
OT matrix missed entries for ApplyDirectStyling vs. all member ops
Merge pull request #769 from kossebau/fixGlitchesInMatrix

OT matrix missed entries for ApplyDirectStyling vs. all member ops
Add test showing merge paragraph assert with some exotic odf elements
Allow merge paragraph to handle unexpected nodes near paragraph boundaries

getTextElements may return some unexpected text nodes if the step filters
haven't correctly identified the first/last step in the paragraph. Rather
than failing completely in this case, simply log the unexpected items and
skip them.

getTextElements itself still needs to be fixed in these cases, but the
harm caused by such mistakes is slightly reduced in this instance.
Merge pull request #771 from peitschie/merge-p-fields

Allow merge paragraph to handle unexpected nodes near paragraph boundaries
Add test demonstrating foreign elements are discarded on paragraph merge
Fix preservation of foreign elements on paragraph merge

This behaviour was working prior to the merge paragraph operation being
introduced. A new edge case was introduced related to cleaning up empty
spans that caused this to regress.
Merge pull request #770 from peitschie/merge-p-save-children

Fix preservation of foreign elements on paragraph merge
Avoid FF vs Chrome font size rounding differences

Choosing a point size that maps exactly to a pixel size avoids
differences between how FF and Chrome round font sizes. FF performs no
rounding, while Chrome rounds to the closest pixel.
Allow multiple accepted values in LayoutTests

Cope with cross-browser differences by allowing multiple possibly value
matches.
LayoutTests cleanup: use Object.keys array for key iteration
Add fixed line-height to ensure consistent cross-browser behaviour
Merge pull request #775 from peitschie/ff-font-size

Fix failing FF layout tests
Removed getParagraphElement from OdtDocument

This function only redirected to the OdfUtils version and many callers
already had an existing instance of OdfUtils to use. Any callers who did
not have an instance of OdfUtils now create one to continue using the
function.
Remove style element functions from OdtDocument

Removed getStyleElement, getParagraphStyleElement and
getParagraphStyleAttributes from OdtDocument as these functions simply
redirect to their implementations in odf.Formatting.