Drastically improve the performance of undo ops grouping on large states

Continuous typing causes the undo states to potentially become extremely
large. The naive assumption that some of the arrays in use would stay
small causes immense slow-downs when determining whether to create a new
undo state.

These bottlenecks have now been removed, and the search depth of various
grouping conditions have been limited to psmaller sizes.
Merge pull request #324 from peitschie/undo-perf-tweaks

Improve the performance of undo ops grouping on large states
Rewrite DomUtils.getNodesInRange to improve performance

By changing how boundaries are being checked, iteration
performance is boosted quite significantly for text node
retrieval.

* Replace @returns with @return in affected files
Merge pull request #327 from peitschie/range-perf

Rewrite DomUtils.getNodesInRange to improve performance
Enable virtual selections in Viewer.

This initializes the Session, SessionView,
and SessionController, without yet enabling
editing, so that cursor movements and therefore
virtual selections work.

Hide the caret and handle.
Merge pull request #333 from adityab/virtual-selections-viewer

Enable Virtual Selections in Viewer
Only re-render the selection overlay once per batch of requests

Also, decrease the maximum latency between a render request and when the
update is performed to be 0ms. The previous value of 200ms was quite
noticeable when indenting or unindenting paragraphs.