Make destroy() idempotent like it was in 1.7, to avoid various issues, fixes #15815 !strict
Update trunk to 1.9.0dev. Fixes #15830. !strict
clarify description of constructor, refs #13101 !strict
Don't call evt.preventDefault() on touchstart, since on mobile, it prevents the click event and also scrolling.   Refs #15838 on trunk/ !strict.  

Scrolling still doesn't work perfectly on mobile:
    - touchstart selects a tree node, even though I'm just trying to scroll the tree
    - as the tree scrolls, whenever a tree node moves under the *original* position of my finger, it becomes highlighted, and then on touchstart the node under the original position of my finger is selected
Don't monitor mouseover/mouseout on mobile, since you get misleading events when drag-scrolling.   Refs #15838, fixing it on trunk, !strict.
Add aria-labelledby for TitlePane, fixes #15853 on trunk/, thanks Michael Billau (CCLA on file with IBM), !strict
Cleanup Destroyable code, allowing a given handle to owned by multiple Destroyable instances, and fixing double-call to handle._odh.remove(), fixes #15851 on trunk/ !strict.
Fix data store update notifications for when store is asynchronous.   Still needs a good test case.   Fixes #15847 on trunk/ !strict.    Also fixing the !ObjectStoreModel doc.
Avoid spurious failure on latest chrome due to precision errors.   If there are still failures after this, then need to change test to do Math.abs(x-y) < 1 or something like that.    Refs #12728.   Fix on trunk/.
more test fixes to avoid spurious failures, refs #7681 on trunk/
Various DOH robot updates:

   - Don't include dijit code into page with robot test code; dijit should only be loaded in the content iframe.
   - Fix double scrollbar on tests (on IE8) caused by overflow:visible setting on <html>
   - Prefer dojo/domReady! to dojo/ready, in order to support other AMD loaders.   However, dojo/ready is still needed for the outer frame to detect when the inner frame (with the content) has completed initializing.
   - Since robot depends on dojo, use domClass.add() and remove() to add dohRobot class to <html> node, to avoid getting a space character in the class string.
   
 Fixes #15865, refs #15616 on trunk/ !strict.
For dojo core and dijit, use require(["dojo/domReady!"], cb) rather than ready(cb) so that dojo code can run against other dojo loaders.

Exceptions:
     - robot.initRobot() related code that checks when page inside of iframe has finished initializing
     - dijit-legacy-requires back-compat code for synchronous mode, which load modules that weren't explicitly required (ex: how dijit/_WidgetBase loads dojo/_base/manager)
     - dojo/parser's parseOnLoad: true support
     - dojo-config-require sync mode operation

This change depends on dojo/domReady! executing it's callbacks in the order they were registered.  To ensure that client-defined callback code executes after the callbacks inside of dojo/dijit, client code should either continue using dojo/ready, or use a nested require(["dojo/domReady!"], ...) inside of the original require that loads the modules:

{{{
require([...], function(...){
         require(["dojo/domReady!"], ...)
}
}}}

Further, when the client code needs to run the parser and then run another block of code, it should be done like:

{{{
require([..., "dojo/parser"], function(..., parser){
     parser.parse().then(...);
}
}}}

Viewport.js needed a setTimeout() to workaround bug #15866.   It should probably be removed when that bug is fixed.

Refs #15616, #15866 !strict.   Changes on trunk/.
Use domReady() as a function rather than as a plugin, so dependencies can be fully resolved on the server.

This required a few changes to dojo/ready and dojo/domReady though:

   - for dojo/domReady, needed to make sure that tasks were executed in the order they were registered, including tasks registered after the DOMContentLoaded event but before the queue of tasks has been completed
   - delay executing dojo/ready callbacks until all tasks registered via domReady() complete, in order to insure that all the dojo initialization code runs before user defined code
   
 Refs #15616 !strict
Fixes #15728.  Prevent pattern from being set on the native INPUT element
Fixes #15876.  Change script variable to a function local to preserve value.
Remove gradient of buttons in Toolbars; they should only have a gradient on hover/active state.   Fixes #15860 on trunk.
Fixes #15864, #15866.  Remove textarea.onresize event trap since the Viewport.on/resize handles this effectively to avoid a resize loop.
Fix for multiversion support for parser, etc.   Use local require() method provided by define(), not global one.   Also addresses AMD-loader compatibility, since not all AMD loaders are guaranteed to have a global require() method.   Fixes #15539 on trunk !strict.
remove descendants of destroyed TreeNode  from selection, refs #15858 !strict.
remove descendants of destroyed TreeNode  from _itemNodesMap[], refs #15858 !strict.