code: function alias(obj, method, suffix, f) {
    if (obj[method + "_without_" + suffix]) {
      throw(method + "_without_" + suffix + " already defined.");
    }
  
    var was = obj[method];
    obj[method + "_without_" + suffix] = was;
    obj[method + "_with_" + suffix] = obj[method] = f;
  }
docs: Alias a property that is already defined for this Object. Moves the existing
  property definition on {obj[method]} to {method}_without_{suffix} and
  assigns {f} to both {method}_with_{suffix} and {method}.
  
  For example, the following code will override the "save" method of the
  {ctor.prototype} with {my_save} and make the old version available as
  {save_without_timestamp}.
  
  Mixin.included = function(ctor) {
  mixin.alias(ctor.prototype, "save", "timestamp", my_save);
  }
  
  @param {Object} obj    The target object.
  @param {String} method The base method name.
  @param {String} suffix A suffix that will be added to the method name(s).
  @param {Function} f    The function to use to override the method.
  @api public