code: function variadic(configFn, fn, context) {
  	var config = new Config();
  	configFn(config);
  
  	// The caller just configured variadic. Let's let them know early on if
  	// they've made a mistake.
  	config.validate();
  
  	// This wrapper function is what's actually returned by variadic (it's
  	// what callers will think of as "their" function). Its responsibility is
  	// to forward arguments to the config object for processing.
  	return function() {
  		return config.process(toArray(arguments), fn, context || this);
  	};
  }
docs: Entry point ----------- Call this function to configure and return a new variadic function.