code: function(source, target) {
      for (var key in source) {
        var descr = Object.getOwnPropertyDescriptor(source, key);
        if (descr && !Object.getOwnPropertyDescriptor(target, key)) {
          Object.defineProperty(target, key, descr);
        }
      }
      return target;
    }
docs: Poor-man's cross-browser object extension. Doesn't support all the
  features, but enough for our usage. Note that the target's properties are
  not overwritten with the source properties.
  
  @example
  var child = ICAL.helpers.extend(parent, {
  "bar": 123
  });
  
  @param {Object} source     The object to extend
  @param {Object} target     The object to extend with
  @return {Object}           Returns the target.