code: function (key, target, targetKey, noNotify) {
          targetKey = targetKey || key;
          var self = this;
          this.unbind(key);
  
          var oldVal = this.get(key);
  
          // When bound property changes, trigger a 'changed' event on this one too
          getBindings(this)[key] = events.addListener(target, targetKey.toLowerCase() + '_changed', function (oldVal) {
              self.triggerChanged(key, oldVal);
          });
  
          addAccessor(this, key, target, targetKey, noNotify);
      }
docs: Bind the value of a property on this object to that of another object so
  they always have the same value. Setting the value on either object will update
  the other too.
  
  @param {String} key Name of the property on this object that should be bound
  @param {BOject} target Object to bind to
  @param {String} [targetKey=key] Key on the target object to bind to
  @param {Boolean} [noNotify=false] Set to true to prevent this object's property triggering a 'changed' event when adding the binding