Replace IObservedChange for everything other than WhenAny.

This PR changes the `IReactiveNotifyPropertyChanged` and `IReactiveNotifyCollectionItemChanged` to provide just the info provided by the `INotifyPropertyChanged` interface. 

Instead of `IObservedChange` they now publish an instance of `IReactivePropertyChangedEventArgs` that also includes the Sender, but this is debatable. There is no `Value` information included in this interface as the `INotifyPropertyChanged` interface also does not provide this. 

This PR is a preparation for a larger change to `WhenAny` and bindings, which will follow shortly after.

## Proposal

* `Changing` and `Changed` are now similar to the `Changing` and `Changed` on `ReactiveList<T>` which also just publish the event args.
* Make `IObservedChange<T>` exclusive to `WhenAny()`.
* Use `WhenAny()` if you want to be able to get the value or the sender.

## TODO

- [x] Decide if we want sender information on `IReactivePropertyChangedEventArgs`. We don't need this covariant interface if sender information is not necessary, and it also makes the `IReactiveObject` stuff simpler, because we don't need variance there in that case too.