Allow widget views to be loaded from require modules

This required refactoring things that create widget views to use
callbacks instead of return values.
Make changes suggested by @jdfreder
Fix logic
Put callbacks for create_view and create_child_view in options

And add errback support
Clean up some JS code
Remove superfluous error checking
Start describing how IPython works
Start describing notebooks for IPython architecture doc
Add about dialog in Notebook Help Menu.

This allow to get info on version of IPython when running remotely.
The about dialog also send a kernel info request and display the banner
which is useful for non-python kernel that don't match IPython version
Describe nbconvert in architecture doc
Add diagram of notebook components
Implement a couple of suggestions from @jhamrick
Brief description of IPython.parallel
Mention the term REPL
Refer to octave_kernel, not Oct2Py
Replace stick figure with smiley
Wording tweak
inspect_reply messages have 'oname', not 'name'

update adapters accordingly.

The v4 message spec doc wrongly states that they key is 'name'.
Add --url option to iptest
use `python -m IPython.kernel` in IPython kernelspec

instead of `-c [longer way to say the same thing]`