Add tests and fix event error

I was seeing the behavior where a model would change to not fit the
filter function. When the 'change' event fired, it would remove the
model from the internal collection, causing a 'remove' event to be fired
immediately, but then the 'change' event would bubble up and be forwarded
on by `proxyCollection` *after* the 'remove' event. Thus a change event
was fired for a model that was no longer in the collection.

I've modified `proxyCollection` to check for this case, and modified
this module to also listen and test the models against the filters on
"change:[attribute]" events. This removes it from the collection before
any "change" or "change:[attribute]" events fire.

On the reverse side, if a model changes to fit the filter function, we
will wait until the plain "change" event fires in order to add it to the
internal collection. This prevents "change" events from firing after
it's been added to the internal collection.

Unit tests should prevent this behavior from coming back.