code: function copyFunction(original)
  {
    // clone original function
    var target = fulcon(original);
  
    // copy it's "static" methods
    copy(target, original);
    // duplicate prototype methods
    copy(target.prototype, original.prototype);
  
    // add instance reference to the it's own constructor
    Object.defineProperty(target.prototype, 'constructor', {
      value       : target,
      writable    : true,
      enumerable  : false,
      configurable: true
    });
  
    return target;
  }
docs: Creates function that executes provided function
  with all the properties and prototype properties
  (shallow copy)
  
  @private
  @param   {function} original - function to copy
  @returns {function} - copied function