Detect line endings when wrapping occurs between elements

Line ending detection was relying on wrapping occurring near or in a block
of collapsed whitespace. When wrapping occurs between two elements, both
previous and next rectangles may be defined, though the vertical overlap
will be absent.
Add tests demonstrating remaining line ending detection flaws

Line ending detection is still not stable when the wrap point doesn't
span a cursor position (as happens when the wrap occurs over
whitespace). Fixing this issue is not easy, so these tests demonstrate
the current bad behaviour so at least it is somewhat documented.
Add changelog entry
Merge pull request #774 from peitschie/line-scan-fix

Detect line endings when wrapping occurs between elements
Update JSLint
Small fix so JSLint does not abort on the construct like [0][0].

JSLint cannot parse this line:
  l = 3 * l - [0, 0, 2, 1][padlen];
so, i've move [0, 0, 2, 1] to variable a and changed the line to
  l = 3 * l - a[padlen];
Merge pull request #801 from vandenoever/jslint2

Update JSLint.
Introduce a proper CC type to hold style selection information
Delay signalling of enabled state changes until the op batch is complete

The internal state is reset immediately so any external calls to disabled
features will be correctly disabled. Delaying the signal however ensures
processing of groups of operations remains performant.
Enabled direct text styling only if current selection is a text range

Prevents the controller advertising things such as bold and underline
are valid operations for an inline image (they are not!).
Avoid enabling remove hyperlink button if hyperlinks feature is disabled
Add event subscription tracking object to simplify per-frame subscriptions

A common use-case for UI components is to only update the UI state just
before the next frame is rendered, irrespective of how many times a
signal is fired within a given batch of operations.

The event subscriptions object allows these to be easily created and
tracked, and also makes it easier to ensure all subscriptions are cleaned
up at the end.
Merge pull request #676 from peitschie/dfc-enabled-speedup

Improve large selection removal performance
Cache file data within the loaded Zip

The zip code has been refactored to ensure only a single GET request is
needed by the browser to load a document. This makes webodf slightly more
robust when loading documents as it avoids problems with the prior HEAD
request returning different file sizes, or even being unsupported by the
browser/server completely.

The current Zip implementation attempts to lazily load parts of the zip
file during decompression which is a good concept to preserve to allow
memory usage to be reduced in future. For now however, robustness of
file loading is more important.
Remove cache from browser runtime

Removing the internal cache means the XHR will fall back to the browser cache
instead. Most uses don't reload the same unmodified document multiple times
within the same session, so there should be no major problems with this
approach.
Remove now-unused runtime.isFile function
Remove now-unused runtime.getFileSize function
Merge pull request #793 from peitschie/remove-cache

Remove cache from browser runtime
Document usage guidelines for DomUtils.getElementsByTagName*

Adds documentation as requested. Fixed #736.
Optimize all existing uses of getElementsByTagNameNS

Transformed all read-only uses to use node.getElements*. Any loop that
immediately modifies the nodes in the list has been updated to use the
DomUtils.getElements* version.