Reworked the way models are added / removed

Now adding and removing models should only result in adding and removing
events. We will no longer reset the collection on every change.
Superficial changes to tests.