code: function factoryOf(Constructor) {
          return function () {
              var args = Array.prototype.slice.call(arguments);
              args.unshift(null);
              var BoundConstructor = Function.prototype.bind.apply(Constructor, args);
              return new BoundConstructor();
          };
      }
docs: The usage of the 'new' keyword prevents a module from being testable in isolation. Using 'new' makes it
  impossible to test a module without (re-)testing the delegate it instantiates. A solution is to encapsulate the
  instantiation in a factory which can then be injected in the module and mocked for the testing.
  
  This method creates a factory that can instantiate objects by invoking the given constructor function with the
  parameters it receives.
  
  @param {function} Constructor the constructor function to use for instantiating objects
  @returns {function} a factory function that expects the same parameters as the given constructor function