Do not trigger didSetProperty if value is unchanged.

Also, fix determination of oldValue (previous a falsy value would not be found
in `this._attributes`).