Move the various getDirectChild functions to DomUtils.getDirectChild.
Merge pull request #448 from vandenoever/getdirectchild

Move the various getDirectChild functions to DomUtils.getDirectChild.
Re-implement paragraph & document selection using step iterators

Changes in adjustSelectionByNode logic fixes extend-by-paragraph
problem (issue #335).
Crop range selection to the anchor root

Fix an unhandled case if the anchor and focus points of a range were in
two separate roots. The select range logic will now clip the range to
the closest valid edge within the anchor's root.
Use the start node rather than cursor for word boundary expansion

The SelectionController interfaces allow word-expansion to occur on
arbitrary ranges that may not be tied directly to the cursor (e.g., when
used via the selectRange interface). This means the correct root to use
in all circumstances is the starting node & offset.
Add a CompoundEvent class which represents
an event that can be represented as a logical
composition of several events working together.

Also adds a 'longpress' event.
Select a word when long-pressing on it.
Only trigger a long-press if started with 1 finger,
and cancel the long-press if an additional finger
is added.
400ms seems an even better time for longpress
because it does not pop up iOS's native selector.
handles
Drag event.
controller