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 b9136758cb425545171051b201acfa3af5285b82 separately, as the file move makes it hard to see what changed in `ReactiveCollectionMixins`