Refactor the do_diff and manual child view lists into a separate ViewList object

This PR attempts to factor out the maintaining of child view lists from the WidgetView class.  Advantages include:

* Ability to easily have different types of containers for child views
* Less code in WidgetView
* Most importantly, the ability to easily have multiple kinds of child view lists (for example, suppose you have a two-column widget, and you want a separate child list for the left and right).

CC @jdfreder, @ellisonbg 
`var i = 0; and for(; i < new_models.length; i++)` ?
(Just that having `var i;` hanging there alone seems weird.)