code: function extend (child, parent) {
      var proto = child.prototype,
          p     = function () {};
      p.prototype = parent.prototype;
      child.prototype = new p();
      for (var i in proto) {
          if (proto.hasOwnProperty(i)) {
              child.prototype[i] = proto[i];
          }
      }
      child.base = parent;
  }
docs: @private
  @function Make a constructor extend another.
  Makes a subclass by creating a prototype for the child that shares the
  prototype of the parent. Addionally sets the base property of the child
  function to point to the parent function (useful for calling
  `arguments.callee.base.apply(this, arguments)` in the top of the child
  function to allow use of parent constructor).
  
  @param {Function} child
  Child constructor.
  @param {Function} parent
  Parent constructor.