Allow widget views to be loaded from require modules

As discussed previously, this is a significant improvement for building widgets outside of IPython, because from the Python side, you can install the Javascript, load it and display the widget all in one go - previously you had to leave an arbitrary gap between loading the nbextension and displaying the widget, to allow time for the extension to load asynchronously and register the widget view class. I have already adapted [mobilechelonian](https://github.com/takluyver/mobilechelonian/tree/require-widgets) to use this.

This required refactoring things that create widget views to use callbacks instead of return values, because require loads modules asynchronously.

I plan to do the same for comm targets, which have a similar global registry, and the same problem with async loading. But I wanted to get this up for review first.
In the `create_child_view` method you use a positional argument, which I prefer because the call seems pointless without a callback.  I wouldn't complain too much if we decided to keep the AJAX design pattern, but could we at least make it so `create_child_view` and `create_view` were the same in this manner?  Do you or @minrk have strong feelings for the AJAX design?