Fix several bugs in derived collections

This PR does two things:

* Unbelievably stupid ordering bug
* Allow the caller to clean up subscriptions created by CreateDerivedCollection so it doesn't leak memory

Reviewers, you'll want to have a look at 9420f69 separately, as the file move makes it hard to see what changed in `ReactiveCollectionMixins`