whole_func_string: function(name/*, options, fns*/) {
      var args = utils.slice(arguments, 1);
      var opts = args.shift();
      var type = this.getLoaderType(opts);
      this[type].set(name, this[type].resolve(args));
      return this;
    }
func_code_string: function(name/*, options, fns*/) {
      var args = utils.slice(arguments, 1);
      var opts = args.shift();
      var type = this.getLoaderType(opts);
      this[type].set(name, this[type].resolve(args));
      return this;
    }
func_documentation_string: Register a loader. The first argument is the name of the loader to register.
  
  ```js
  // create a loader from other loaders.
  loaders.loader('foo', ['bar', 'baz']);
  // pass a function
  loaders.loader('foo', function(patterns, options) {
  return glob.sync(patterns, options);
  });
  // combination
  loaders.loader('foo', ['bar', 'baz'], function(patterns, options) {
  return glob.sync(patterns, options);
  });
  ```
  
  @name .loader
  @param  {String} `name`
  @param  {Object} `options`
  @param  {Function|Array} `fns` One or more loader functions or names of other registered loaders.
  @return {Array}
  @api public