Change the way PropertyChanges checks a value change

The value that was checked against the current value was the value given in the setter, this doesn't account for logic in the setter that changes the final value to be stored, (e.g.: set: function(value) { this._value = value * 2 }).

With this change we first call the original setter of the object and then get the value again to obtain the computed value.