Allow for a widget's markupFactory() to return a Promise.   The Promise returned by dojo/parser::parse() won't resolve until all widget's promises have resolved.   Also, make !ContentPanemarkupFactory() return a promise base on the nested parse() call.  Together, these changes make sure a parse() call waits for !ContentPane's nested parse() calls to complete before calling startup() on any of the widgets.

The change to parser makes markupFactory() a general purpose factory function for widgets, which can even be useful when used programatically.   The naming of the function is unfortunate, since it suggests that it's only useful for markup, but I'm reluctant to use a common name like create() since that may already be in use for another purpose.

Also, had to do acrobatics to keep back-compat of the signature of dojo/parser::instantiate().

Fixes #16503, refs #13782 !strict.