Support dijit/Tree DnD on mobile, and support touch.over, touch.out, touch.enter, and touch.leave synthetic events from dojo/touch module.   Also fixed touch.move to behave like mousemove.

I refactored the touch.over/touch.out code to work by firing synthetic events when it that the user drags over a different node than before.   

About touch.move: Previously, on(node, touch.move, func) on mobile would only trigger func if the user started their drag inside of the specified node.   This did not match the behavior of on(node, touch.move, fun) on desktop, which was to fire events whenever the mouse was moved over the specified node, regardless of where the mouse movement started.   DnD at least was depending on the onmousemove-like behavior.

Refs #14185 !strict.
Re-enable _CssStateMixin to track focus events on widget subnodes since legacy themes (tundra, nihilo, soria) are using that feature for !ComboButton's in Toolbars on IE.

Refs #14568, fixes #15196 !strict.
Fixes #15200.  Selected was separated from Hover in 1.7 but the legacy themes need an extra CSS rule.
Use standard has.add()/has() for feature detection wraping.   Refs #12375 !strict.
Use standard has.add()/has() for feature detection wrapping.    Also, use domConstruct.destroy() to get behavior needed for IE.   Refs #12823 !strict.
Removing dependency on win.doc global-ish variable:

- Each widget has a document determined at creation time, usually implied by srcNodeRef.ownerDocument but also specifiable explicitly.    Save that in this.ownerDocument, and for convenience also record the associated <body> node in this.ownerDocumentBody.    Maybe this.ownerDocument should be called this.doc instead,  but I thought that might be confusing with Editor.document.

- In widgets, use this.ownerDocument instead of win.doc, and this.ownerDocumentBody  instead of win.body().

- Since domConstruct.create() doesn't take a document parameter, either pass in a refNode (which implies the document), or avoid using domConstruct.create().   Could also have wrapped the domConstruct.create() calls with win.withDoc(), or used domConstruct.toDom().

- Miscellaneous fixes to widgets.

- Make dojo/_base/window::body() take an optional document parameter.

Editor not yet converted.

Refs #15216 !strict.
Use winUtils.get() to get window from document.  Refs #15216 !strict.
Add missing (optional) document parameter for various DOM methods, and update code (mainly dijit code) to pass in the document to those methods, fixes #15229 !strict.
A few fixes around win.doc references:

1. Standardize on this._sCall() interface to access selection API.   Also looked at passing window parameter to each selection method, or creating a Selection class that's attached to a window on creation... but just did the simple thing for now.   OTOH the range API takes a window parameter.

2. remove unneeded win.withGlobal(), win.withDoc() calls

3. misc cleanup

Refs #15216 !strict.
Move hccss to dojo/core (leaving back-compat stub in dijit) and make dojo/dnd dependency explicit.   Fixes #15230 !strict.
Fixes #15256.  Check for disabled and readOnly before searching on key input.  Added automated test. !strict
dom-class dependency no longer necessary, thanks Sudoh-san, refs #12823 !strict.
Remove some unused dependencies plus supply missing document parameter to dom.byId(), refs #15216 !strict.
Add aria role, fixes #15257, thanks Mike !strict.
missed a few spots, refs #15216 !strict
Fix error from [28401], which removed the dojo/_base/window dependency but left references to it, thanks Sudoh-san, refs #15216 !strict.
Fix race condition where drop down closes before focus timer fires, fixes #15197 !strict.
When win.global is used as a scope for global variables, rather than a reference to the browser's Window object, use kernel.global instead.   I'd prefer to use neither but that's an arguable break in backwards compatibility.   At least this makes things clearer and in many cases removes the dependency on dojo/_base/window.

Refs #15275 !strict.
Merge upstream/master