Add support to make it easier to work with view attributes as domNode at...

...tributes to work with {{foo}} updates in the templates.  Any view properties which are not private (begin with _) and or are not a function will be added as attributes on the widget so that those values can be updated on the domNode, and have the change reflected with handlebars {{foo}}.
I don't think we have a practice of underscoring variables. I understand the idea here is to not collide with the controller parameter in the promise callback but maybe another name should be found? Also I did not look at the details but is that intermediary variable really needed? Can't we just pass controller to the resolve?