Add Uglify optimizer to build system. Fixes #14684. Also introduces some ability to pass options using the optimizeOptions key though it is unclear how well this works at this point. Refs #16196. !strict
Make sure options object is actually passed to uglify. Refs #14684.
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.
Refactor robot so initRobot() is implemented as an asynchronous test fixture, rather than using monkey patching code that doesn't work well, having two places calling doh._run() in a race condition.   This design also makes better code separation between vanilla DOH and robot.

I plan to do the same for startRobot() in the next check in.

Also fixes priority of ready() call inside DOH.   The default priority is 1000, so we need to be higher than that, so that DOH doesn't execute until the iframe's dojo.ready() call has finished executing.

Fixes #16386 !strict.
Refactor robot so startRobot() is implemented as an asynchronous test fixture, rather than monkey patching doh.run().  This design makes better code separation between vanilla DOH and robot.

Refs #16386 !strict.
IE sporadically fires the timer even though we cleared it; seems to be related to the killRobot() at the end.    Refs #16388 !strict.    (There was similar code there originally which I removed as part of this ticket, but turns out it needs to be there.)
Fix builder's handling of strings in staticHasFeatures, and add new "css-user-select" has() flag from [30098] to webkitMobile build, fixes #16421 and refs #15990 on trunk !strict
Rollback [30108] as it turns out the old behavior (nested quoted of staticHasFeatures string values) was intended.   Refs #16421.
Remove some console.log() statements that are breaking optimization with closure compiler (during a build).

Lines like "top.console.log(group);" are converted to "top.0 && console.log(group);" and then the closure compiler complains about missing semicolon before where the && is.   Not sure what "top" is, why it's getting converted to "top.0", or why the optimizer is complaining, but seems like the simplest thing is to just remove those lines.

Refs #12740 !strict.
Stop accessing dojo/main from DOH modules, and stop using the dojo and dojox globals.   This includes stopping mixing in "dojo" into "doh".   Hopefully no one was depending on that besides the DOH code itself.  Fixes #16577 !strict.
More fixes to stop accessing dojo/main from DOH modules.

Moved fixHeight() from _ParseURLargs.js to _browserRunner.js so I can use require() to get the dojo modules being used by that function.   It turns out that fixHeight() is using a fair amount of dojo code (on IE9) in order to fix sizing of the runner.

Refs #16577 !strict.
refs #15130. Fixes copyrights date for 2013.
Remove firebug-lite dependency from browserRunner.js, refs #12672 !strict.  It was added in [24395] but doesn't seem to be necessary [anymore], even when running on IE6.   I understand needing firebug-lite when running an individual test but I don't see the point of it in the test runner, since the test runner has a log pane already.
Use dojo/domReady rather than dojo/ready, refs #16585 !strict.
Use data-dojo-config instead of djConfig (as attribute passed to <script src=dojo.js>), and data-dojo-id instead of jsId.   Demos, dijit, dojo, and util.   Refs #16585.
event="..." --> data-dojo-event="...", args="..." --> data-dojo-args="...", refs #16585
Enable aliases for persian calendar Refs #16581
fix dependency on dojo/_base/config to get the command line arguments parsed by dojo.js, refs #16577 !strict