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
Fix ansispan() to ignore stray [0m
Use more yellowish color for ansiyellow
Test IPython.utils.fixConsole() (really ansispan())
Start describing how IPython works
Start describing notebooks for IPython architecture doc
Checks for metaclass's __repr__ in _type_pprint

RepresentationPrinter has a type pprinter for 'type' subclasses. It will
thus be called to print a class object (instance of 'type), avoiding the
__repr__ of the metaclass.

This patch checks for an overridden __repr__ before using the custom
type-representation logic.
Find and replace newlines in __repr__ results
Support echoing output from other clients

in the zmq console

Can result in outputs like:

```
In [1]: 1
[remote]In [1]: 1
[remote]Out[1]: 1
[remote]In [2]: 3
[remote]Out[2]: 3
Out[3]: 1
```

Note that there will be inconsistencies in prompt numbers
because some execution may take place after the in-prompt is drawn.
add ConsoleWidget.include_other_output

matches zmq console. Doesn't include `[remote] ` prefix,
because true async output makes it less important.
highlight input from other front ends

in qtconsole
Describe nbconvert in architecture doc
Add diagram of notebook components
Implement a couple of suggestions from @jhamrick
Brief description of IPython.parallel