Refactor the do_diff and manual child view lists into a separate ViewList object
allow unrecognized outputs and cell types in notebooks from the future

in nbformat schema / validation
Handle unrecognized outputs and cells from the future
Make error messages more consistent
Make state_change initialization more conventional
Missing semicolon
Make a copy of the input list so that changes to the children list don't automagically change our reference list
tweak documentation for viewlists
Implement view logic in selection containers.
Return the viewlist from the update promise so that you can use it immediately.

The pattern is:

viewlist.update(new_list).then(function(new_view_list) {
   ...
})
Do something about do_diff being used for the class stuff in widgets
At least log an error if there is no create or remove defined.

We might just remove this...
Merge pull request #6 from jdfreder/viewlists

Implement view logic in selection containers.
Merge branch 'viewlists' of https://github.com/jasongrout/ipython into viewlists
reimplement the add/remove class logic to not use do_diff and remove do_diff
Remove obsolete logic: storing references to child views in a view

Users are responsible for keeping track of views they create and removing them in a view's remove() method
Add comments emphasizing the order of steps in widget box remove() methods
Update widget selection containers to reflect how viewlist works

add_child takes a model and returns a view.  remove_child takes a view and removes it.
the pop_child_view method is now gone.
Fix viewlist to use promises correctly

A viewlist wasn't getting properly populated before.  This also switches the list update to use splice for in-place updates.
Catch errors after our then()s, instead of in parallel with them (this missing exceptions)

When an error is thrown in a then() success handler, it doesn't call the same then()'s error handler.

I also made all of the utils.reject handlers verbose to aid in debugging.