Fix KVO that breaks if a target object overrides 'isEuql' and 'hash'