Added `promise` support to views.

If a `promise` is passed as an option to a BaseView instance, display a
loading indicator (by default) and wait until the promise is fulfilled
before rendering the view.