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 
I'm not picky and therefor I'm not asking you to change this, but out of curiosity why not 
```js
for (var i = 0; i <that.views.length; i++) {
```
or
```js
var len = that.views.length;
for (var i = 0; i <len; i++) {
```
?