RxUI6: Additional interfaces cleanup

This PR removes the untyped `IReactiveNotifyPropertyChanged`, `IReactiveNotifyCollectionItemChanged`, `IReactiveNotifyCollectionChanged` interfaces, makes `ObservedChange<T>` immutable and continues the cleanup started in #432.

## What is this PR changing?

- `IReactiveObjectExtension` is now `IReactiveObject` and contains the two untyped interfaces that are left.
- `ExtensionState` class has been extended significantly to make it generic. It now also contains a reference to the object it extends. This does not leak because `ExtensionState` would be kept alive as long as the extended object lives anyway.
- `IRNPCObservableForProperty` now uses the extension methods on `IReactiveObject` and has been renamed.
- `ReactiveList<T>` is now also `IReactiveObject` since it provided the same functionality already anyway.
- No more untyped interfaces that have typed equivalents. The untyped equivalents were not used much anymore.
- `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.
- `IRoutableViewModel` no longer inherit `IReactiveNotifyPropertyChanged`, but `IReactiveObject`.
- Fixes to comments which were incorrect because of #432.

## TODO

- [ ] Discuss the new changes.
- [x] The Xamarin stuff is still on my list, so those projects probably need to be fixed.