Fix #858: Selection: Avoid range confusion involving orphaned nodes

If an update occurs on the row at which a selection range was started,
and the user later shift+selects, an infinite loop occurs because
Selection wrongly assumes that the element from the starting row is
still in the document, when it was actually replaced with a new one.
This works around that by detecting if the element is no longer in
the document, and grabbing the equivalent element that is in the document
instead.
CHANGES.md: Note Selection orphaned range start row fix
Fix #817: tree: insert preload nodes into the linked list correctly

This commit adds tests for expanding trees with long lists of children.
tree: Reorganize unit tests to be promise-based and to work in IE
CHANGES.md: Note OnDemandList preload node ordering fix

Also rearranged items into significant/other groups for 0.3.14
Fix #820: Override CompoundColumns#cell/column to find by original id

Includes added unit tests.
CHANGES.md: Note CompoundColumns column/cell id lookup fix
Fix #867: List: Don't call inherited destroy if useTouchScroll is false
CHANGES.md: Note useTouchScroll: false + destroy fix
Use direct DOM sibling accessors to get previous and next rows to avoid catching parent or child tree nodes in overlaps
Test stores: Make async country store observable to test tree edits
tree: Add unit test for child modification
CHANGES.md: Note tree child modification fix
tree unit test: Uncomment afterEach now that the test is verified
Fix #757: Selection: Listen for both touch and mouse/keyboard events

This revises event listener initialization logic to hook up both touch
and mouse/keyboard event listeners on webkit touch devices.  A flag is
set when a touch event is triggered, to avoid re-triggering Selection
events on emulated mouse events.
ColumnSet: Remove has("touch") conditions for touch+mouse devices
List: Default useTouchScroll false on platforms w/ visible scrollbars

This disables the TouchScroll module's behavior on platforms where
has("touch") reports true, but discrete scrollbars are rendered.

This is an admittedly somewhat loose heuristic, but achieves in
preventing TouchScroll from hindering on platforms that typically
have mouse input available, such as IE and Chrome on hybrid Windows 8
laptop/tablet devices.  These platforms generally do just fine with
native touch scrolling support, as well.

Unfortunately, there is no known foolproof solution to feature-detect
the presence or absence of a mouse.
DnD and util/touch: Tolerate mouse events on touch-supported devices
CHANGES.md: Note fixes for mouse+touch devices
Minor functional test code cleanup