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.
This one had more parameters than create_child_view. It also already has an optional parameter after `options`, which is probably wrong, but I didn't want to change it, and that optional parameter caused minor problems when I put the callback parameter after it, so I just shoved it into options.

I don't feel strongly about this. I'll rework it to take a separate callback parameter.