Changed RaiseWhenChanged method to use EqualityComparer instead of Object.Equals to honor IEquatable<T> implementations.