(IN PROGRESS) Refactor widget child view lists

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).
I'm not sure I want to do this after all.  The whole purpose of the widget.js do_diff is to maintain backwards compatibility, and I'm already changing the do_diff in the viewlist.  It's probably better to keep it just the way it is and remove it altogether at some point.