Fix #874: tree: Remove unnecessary code causing nested expansion issues
tree: Add enableTransitions column definition property
DnD: Fix issue when dragging previously-dragged row to end of grid
DnD: Prevent error in short-circuit logic on long drags

This specifically involves cases where an item is dragged a long enough
distance such that the original row is destroyed.
DnD: Cleanup

I'm a horrible person.
Minor doc fixes

Thanks @msssk for finding the issues in the OnDemand docs
Keyboard.js: do not emit dgrid-cellfocusout event when _focusOnNode is called by _restoreFocus
ColumnSet: Fix header focusing issue

When initially focusing the header with no prior context, ColumnSet
would incorrectly focus the outer `th` rather than the `th` of the
first column of data.
Keyboard: Fix error when calling focus() on an empty grid
Fix #976: Make ColumnSet scroll focused cells into view
Fix #958: editor: Don't call startup on widgets before they're in flow
README: Fix typos, improve wording, update Dojo version
Fix #977: util/misc.escapeCssId: Ensure parameter is string
Fix #765: _StoreMixin: Show noDataMessage when store is null
Fix #848: Pagination: Improve focus-related logic for navigation

* Set tabIndex to -1 on disabled navigation links
* Restore focus accordingly based on what was focused and what is now disabled
Cleanup of earlier commits today
Fix a typo
OnDemandList: Invert _calcRowHeight logic to resolve scroll glitches

The glitches manifested particularly when removeDistantNodes was run.
tree: Improve logic around rendering child levels

* Don't bother creating a preload node when not using OnDemandList
* Create preload nodes at both ends of the child level and improve code flow
* Simplify OnDemandList#renderQuery arguments (preloadNode no longer needed)
OnDemandList: Improve scroll-direction-detecting logic

When tree is used, its top preload node will also have a rowIndex of 0, so
this check wrongly assumed that it is above, even if it isn't.

We still check rowIndex first because it's cheaper than checking offsetTop,
and this is still not a 100% accurate fix if the user scrolls very fast.