FIX: ViewModel<T>.Model is unusable

instance.Equals(value) was originally used as a replacement for instance
== value (which causes a compiler error if instance isn't specifically
of a reference type). But it introduced a major problem where Model
could not be set (because modelData always starts off null).

Object.equals(instance, value) is a good replacement for
instance.Equals(value) because it works when instance is null.

Added unit tests to prove that it actually works!