Add promises to the widget framework.

Parallel to @jasongrout 's solution (human race condition).
So when accessing that._models[model_id], you constantly have to special-case depending on whether the model is a promise or not.  Would it be simpler to always have it be a promise, i.e., always need to do `.then(function(model) {...})`?  I think that would be conceptually a lot simpler.