Selection: Only emit dgrid-deselect event if previously selected

Also adds tests for select and deselect events;
original test cases courtesy of @treasonx.
CHANGES.md: Note Selection deselect event behavior fix
Fix #885: Escape column IDs in CSS selectors like we do grid IDs

Also avoid calling `put-selector/put` in areas sensitive to this for grid IDs,
as it currently can't handle some characters and doesn't understand escaping.

Special characters in column IDs are replaced with hyphens rather than escaped -
Grid already behaved this way, but updates were necessary to extensions
for consistency.
Add tests for escaping grid/column IDs where necessary
CHANGES.md: Note changes involving special chars in column IDs
Fix #822: Don't modify the selection when clicking on disabled rows
CHANGES.md: Note Selection behavior fix for disabled rows
demos: Move JS into modules
demos: Move DOM into modules
DnD: Update dojo/dnd UI when an item is deselected programmatically
Fix Keyboard mixin attempts to focus ColumnResizer resize handles
Add manual ColumnResizer+Keyboard test, and note fix in CHANGES.md
Fix #907: List: Don't attempt to run DOM-sensitive has test immediately
CHANGES.md: Note fix to early feature test regression
Fix #786: Shift + row select highlights outside text (IE)

ms-user-select: none; will block selection from starting on the element.
It will not block an existing selection from entering the element.

When using the shift modifier IE will select everything from the top of
the document, or last clicked location, up until the shift-clicked
location. Since the selection starts outside of the element marked with
ms-user-select: none; all of the text is selected.

Added a check for msUserSelect, and fall back to other methods to stop
selection.
CHANGES.md: Note IE10+ Selection fix for disabling text selection
CompoundColumns: Add test case for programmatic sorting
Keyboard: Move contains function to util/misc for reuse
Fix #901: CompoundColumns: Fix programmatic sort arrow placement

This adds a `_findSortArrowParent` extension point to Grid, so that
CompoundColumns can extend it to add logic necessary for resolving the
correct cell to show the sort arrow in when sorted programmatically.
CHANGES.md: Note CompoundColumns programmatic sort fix