RxUI6: Additional interfaces cleanup

This PR removes the untyped `IReactiveNotifyPropertyChanged`, `IReactiveNotifyCollectionItemChanged`, `IReactiveNotifyCollectionChanged` interfaces and makes `ObservedChange<T>` immutable and continuing the cleanup started in #432.

## What is this PR changing?

- No more untyped interfaces that have typed equivalents. The untyped equivalents were not used much anymore.
- `ReactiveObject` is now `ReactiveObject<T>` where T should be a `ReactiveObject<T>`. This change is necessary to allow `ReactiveObject` to raise strongly typed changing and changed events.
- `ObservedChange<T>` is immutable. This removes `fillInValue()` which was using a cast that was not type safe. Almost all instances of `fillInValue()` could be written without. 

## Other small fixes

- `IReactiveDerivedList<T>`is now also covariant.
- `IRoutingState`and `IRoutableViewModel` no longer inherit `IReactiveNotifyPropertyChanged`. I believe this should not be part of their contract anyway.

## TODO

- [ ] Understand how `SubscribeToExpressionChain<TSender, TValue>` works, especially the Aggregate part. Hopefully @paulcbetts explain this.