Re-implement paragraph & document selection using step iterators

Changes in adjustSelectionByNode logic fixes extend-by-paragraph
problem (issue #335).
Use named constants for movement direction rather than magic numbers
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.
Merge pull request #450 from peitschie/paragraph-sel-fixes

Various fixes to paragraph and range selection
Fix DomUtils.getNodesInRange when started just before a rejected node

Stop getNodesInRange from returning children of rejected parents
when supplied range starts just before a rejected node.
Fix DomUtils.getNodesInRange when started inside a rejected subtree

When the supplied range is started within a rejected node, this
function will now start iteration just after the highest rejected
node. This brings the getNodeInRange filter behaviour inline with
existing PositionIterator logic.