Build widgets on composeJS rather than dojo.declare().

Changes include:

1. no constructor() or postcript() methods anymore
2. this.inherited(arguments) replaced by after(), before() and around advice function decorators,
    available from lib/compose/compose or dui/register modules.
3. must use compose() or register() to declare mixins or widgets (respectively); don't use dojo/_base/declare
Custom element support in markup.

1. In markup, widgets look like <dui-starrating foo=bar> rather than
    <div data-dojo-type=dui/StarRating data-dojo-props="foo: bar">.
    For widgets that enhance an existing tag, syntax is <button is="dui-button>.
2. Use register.parse() rather than dojo/parser.parse().  There's no parseOnLoad:true or auto-loading
    or data-dojo-mixins.

3. create() renamed to createdCallback()
4. constructor() and postscript() no longer run; move custom code from constructor
    to createdCallback: register.before(function(){  ... })
5. original DOMNode is not deleted; buildRendering() just puts subnodes and/or text inside it
6. this.srcNodeRef and this.domNode both replaced by "this"
Minimal support for programmatic creation.

This checkin applies the parameters specified on the new MyWidget(...)
call before buildRendering() occurs.  However, to be forwards compatible
with document.register() or an equivalent polyfill, the parameters really
shouldn't be applied until after createdCallback() returns.   Because in order to
build on native browser custom element support, a call like:

new DuiButton({label: ...})

will be implemented as:

// Create DOMNode and call createdCallback()
var myWidget = document.createElement('dui-button');

// Apply attributes
myWidget.label = ...;

What happens inside createdCallback() as opposed to startup() is
another question.
Trigger introspection of constructor from register().
Also moving _setFooAttr: string processing back to _WidgetBase.js.

For IE, introspection needs to happen early, since it adds custom getters/setters
to the prototype and the prototype is essentially mixed in to every upgraded DOMNode.
Specifically, introspection needs to happen before register.getTagConstructor().
Support IE via Object.defineProperties() on Element.
Setting __proto__ almost works on IE11 but it erases things like node.attributes. :-(