Add promises to the widget framework.

Parallel to @jasongrout 's solution (human race condition).
If `that._models` didn't change types (i.e., it was always the promise objects), then you wouldn't need most of this function.  Just `return that._models[model_id]`.