Fix various errors in !TimeTextBox test, in particular that you can't have any robot commands after a d.getTestCallback(), refs #7681.   Test is still flaky though.
Refs #15097. Wrap valueNode.click() inside defer() so the current event that is being stopped doesn't get mixed up in IE. Fixed several tests to not use fake click events that don't understand defaultPrevented.  Fixed several tests to not assume click() processing is synchronous. Added additional mobile tests to the mixin tests.
Update _KeyNavMixin to use dojo/on rather than deprecated dojo/connect.   On the downside though, it splits _onContainerKeypress() into two functions, _onContainerKeypress() and _onContainerKeydown(), each receiving a native event without evt.charOrCode set, so may cause issues for subclasses overriding these methods, or using this._keyNavCodes to hold printable keys.    Seems ENTER and SPACE and the non-printables like arrows still work fine though.

Make _KeyNav.focusFirstChild() and _KeyNav.focusLastChild() abstract methods, rather than requiring an overloaded API for _getNextFocusableChild().   However, _KeyNavContainer._getNextFocusableChild() still functions to get the first/last child.

Refs #16323 !strict.
Combine tests for basic navigation (tab, arrows, home, and end keys, plus selection) into one section, in order to simplify test and to better check that tab stops work correctly in typical usage.   Refs #8000.
Refactor Tree to extend _KeyNavMixin.  The only behavioral change is that when you tab into the Tree, it always goes to the first node, rather than the previously focused node.   Some changes will affect people who are extending Tree though, if they are either modifying the !TreeNode template or overriding non-public methods.   Incidentally fixes some bugs not obeying Tree.tabIndex (i.e. just assuming the tabIndex is 0).

Also moved focusNext() and focusPrev() from _KeyNavMixin to _KeyNavContainer, thus simplifying signature of _KeyNavMixin._getNextFocusableChild().

Fixes #16323 !strict.
Make _KeyNavMixin base class, rather than _KeyNavContainer and Tree, track child node focus/blur events and update this.focusedChild accordingly.   To support this, the subclass needs to define a selector (this.childSelector) to identify focusable children (ex: .dijitTreeRow).

This has two advantages for _KeyNavContainer:
     1. uses event delegation, which is more efficient and more amenable to server side instantiation, etc.
     2. removes undocumented requirement that child widgets extend _FocusMixin

Refs #16323 !strict.
Catch errors during _setup(), refs #8000
When dojo/on compares the current event to a previously saved event, check if evt.target matches too.   This avoids false matches in the case of dijit/form/Button, where a click event on a <span> programatically triggers a click event on another node (an <input type=button>).   Fixes #15097 !strict.

Also rolls back [29994] which is no longer needed.
Fix !StackContainer test on IE, refs #15097
Aria related fixes from Mike Billau (IBM, CCLA):

    - set aria-labelledby for popups
    - move listbox role of Select widget up to its root node
    - change !TooltipDialog to be role alertdialog rather than dialog, and move that role up to its root node
    - automated tests for aria roles and states
    - other miscellaneous test updates
    
Fixes #16307 !strict.
Support returning a dojo/promise/Promise or dojo/Deferred from a test fixture.   Before, you could only return a doh.Deferred or a dojo/_base/Deferred.    Besides the function name changes, I had to stop DOH from trying to modify the returned value by calling errback().

Update doh.Deferred to support the basic dojo/promise/Promise API methods: then(), always(), otherwise(), resolve(),  reject(). isFulfilled(), isResolved(), isRejected().   It still supports the old method names too, but they should be removed for 2.0.

Update dojo/_base/Deferred to have working isFulfilled(), isResolved(), isRejected() methods; previously (new dojoBaseDeferred()).promise.isFulfilled() was defined but threw an exception, which is sort-of false advertising.   Originally I needed this in the DOH code, but ended up not using it, so this change is optional.

Also updated a few modules to return a Promise rather than a Deferred.    A dojo/_base/Deferred.promise seems to be backwards compatible with the dojo/_base/Deferred, having addCallback() etc. methods.   Except of course that it doesn't have callback() and errback(), but users shouldn't be calling those anyway.   Again, originally I needed this in the DOH code, but ended up not using it, so this change is optional.

This check possibly fixes some tests that were already assuming a test fixture could return a dojo/Deferred.

For 2.0 maybe we should restrict the value returned from a test fixture to a Promise, rather than a Deferred.   Right now DOH looks for a promise attribute (available in dojo/Deferred and dojo/_base/Deferred, but not doh.Deferred), and uses it if available.

Fixes #16388 !strict.
 
Fix a number of test file errors, especially around parsing:

   - Parser was being called twice, once automatically via parseOnLoad:true, and once manually during the test.   It should only have been the latter.
   - Test wasn't waiting for parser to finish running.
   
Refs #12367
Adding some debugging code into test file for when it fails, refs #12367