MVVM framework for .NET that fully automates INotifyPropertyChanged, INotifyCollectionChanged, and ICommand