Refactoring how constructors are called...

This removes the need for asynchronous code in the base widget and addon
constructors. Also allows the constructors to "act normally" when an
element has already been initialized (the object returned from the base
constructor will be called from the constructor wrapper).