BackgroundIframe.js: Use dcl() rather than dojo/_base/lang.extend().
Container.js: Use Node.insertBefore() rather than domConstruct.place().
css.js: Fix many test issues and remove dojo dependencies
by using Node.insertBefore() rather than domConstruct.place().
CustomElement: Use parentNode.removeChild(this) rather than domConstruct.destroy().
Make Destroyable#own() handle Promises.
Also, avoid double destroy when handle has multiple destroy methods (ex: destroy() and remove()).
Fixes for dijit bugs #17763, #17680.

Cherry picked from dijit:

- 797f9a9d5e08aa0e208691e7086a679c8c630e30
- 0169fa4b37922aaf17cd1ebc034fc00b27353878
- 9234eeeffcd957152dd4c0307d76aeff76ec933a
- e5dcf8ee33dadc4a84a4432497dc407d8549f65b
DialogUnderlay.js: Use native methods rather than dojo/dom*.
Likewise for winUtils.get().
focus.js simplifications, forward ports, and reduction in dependence on dojo core.

1. Get rid of focus.curNode/prevNode; can just use document.activeElement.
2. Change API to see new widget stack from watch() to on().
3. Use native methods rather than dom.byId(), domAttr.get(), winUtils.get().
4. refactor, cherry picked from dijit b24525552996dee6c41e299df5f995ba91953b91
5. support for pointer events, cherry picked from dijit 2dcb4e325792caca5bd4ee053a8d7e390c619fff but not using has("...")
FormValueWidget.js, HasDropDown.js: remove unused dependencies.
FormWidget.js: use native methods rather than dojo/dom-style.
place.js: RTL fixes and use native methods rather than dojo/dom-style.

Rolls back changes to place.js from 33dc9b874f74e1bf180f9cb6f3c14d13a0fb7a90
about setting drop down's style.right, and instead always sets style.left.

RTL related changes cherry picked from dijit eecfebfd88c6c56b38b8015f62e2b3ea4ebb9287.
popup.js: use native methods rather than dojo/dom*, except for dom-geometry.position()
uacss.js simplifications

1. Remove setting of box-model CSS class.  This code existed in Dojo V1 mainly for IE
    running in quirks mode.  In modern browsers, everything is content-box model,
    unless you set CSS to override that.  But the CSS for border-box sizing can
    be set on any node, not just <html> or <body>, so I'm not sure it makes sense to
    try and detect it.

 2. Remove code for checking if document is in RTL mode.  I think this can be done through direct
     CSS, i.e. "[dir=rtl]".
Widget.js: Use native methods in Widget#placeAt(), etc.

Also beefs up tests for Widget#placeAt():

- Add proper test and fix doc for Widget#placeAt(node, "replace"),
- Add tests for Widget#placeAt() on a DocumentFragment,
  cherry picked from dijit 38230b8c473fa1be0410366d9454332c5f38d44e.
- Clean up Widget#placeAt() tests in general.
Fix alignment of right aligned dropdowns, fixes #17744.
Cherry picked from dijit 0984b1ee62a6659b3f9013a34f16357cf8cabb99.
Don't treat SPACE as the start of a keyboard search.
Fixes #17766.

Cherry picked from dijit d641c3fc801a582e7517d9a478152e54f331f52b.
Fix popups on SVG nodes on FF, fixes #16310.

Cherry picked from dijit a696ceb7e4fd6c793327df992ec5d972e08781aa,
but moved from Tooltip test to plain place test.
reuse background iframes between (non-currently shown) popups, fixes #17774

(cherry picked from dijit 1deec0aa1bbf4d8602b2886c80c05ab2ac235f9e)
Switch BackgroundIframe test from java applet to PDF,
since the java applet wasn't loading correctly.

(cherry picked from dijit fb0203a01d0869ad5278c5675d986698209a7c24)
Workaround iOS bug where clicking Menu can focus/click an input/button behind it.
Fixes #17816.

Cherry picked from dijit:

- e9a09987211acd8b3b59ed2359b4d21fef099913
- 7efe39728726534c59abc5e82afcff4e3c1ade8c
- af2b3c2d13a83aaf0a217eac99e674a1ae253f96
Update source code comment and fix typo.
Cherry picked from dijit b7d6d40767ca6aca9d5b2d228f1a42447cf6407a.