Allow a reset on a collection binding to remove views

Previously, a reset event on a collection would never remove views. For example:

    users = new Backbone.Collection([{ name: 'nfm' }])
    // Render a view with a collection binding to users
    users.reset([])
    // The exising view for the user nfm will not be removed

This commit ensures that not only is there a view for each model, but also that the number of models has not changed. If it has, we go through the process of resetting with new views.