Derived collections onRemoved handler

This adds an optional Action onRemoved argument to the ReactiveDerivedCollection class, and a matching Action onRemoved each of the CreateDerivedCollection and CreateDerivedBindingList methods.

If the delegate is given, then it will be called whenever a derived item is removed, as well as for each item when the derived collection as a whole is disposed.

The DerviedCollectionShouldHandleItemsRemoved test is also added and passes, and all prior tests pass.

Fixes #743 
We could probably simplify a lot of this code by just writing:

```cs
this.onRemoved = onRemoved ?? (() => {});
```