Replace IObservedChange for e verything other than WhenAny.

This PR changes the `IReactiveNotifyPropertyChanged` and `IReactiveNotifyCollectionItemChanged` to provide just the info provided by the `INotifyPropertyChanged` interface. Note that the changes from #591 are included.

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. 

## Proposal

* `Changing` and `Changed` are now similar to the `Changing` and `Changed` on `ReactiveList<T>` which also just publis the event args.
* Make `IObservedChange<T>` exclusive to `WhenAny()`.
* Use `WhenAny()` if you want to be able to get the value.

## TODO

- [ ] 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 it that case.