function traverse(file) {
      file = master.resolve(file);
      fs.stat(file, function(err, stat){
        if (!err) {
          if (stat.isDirectory()) {
            if (~exports.ignoreDirectories.indexOf(basename(file))) return;
            fs.readdir(file, function(err, files){
              files.map(function(f){
                return file + '/' + f;
              }).forEach(traverse);
            });
          } else {
            watch(file);
          }
        }
      });
    }
Restart the server the given js `files` have changed.
`files` may be several directories, filenames, etc,
defaulting to the server's root directory.

Options:

  - `signal` Signal defaulting to __SIGTERM__
  - `interval` Watcher interval, defaulting to `100`
  - `extensions` File extensions to watch, defaults to ['.js']

Examples:

    cluster(server)
      .use(cluster.reload())
      .listen(3000);

    cluster(server)
      .use(cluster.reload('lib'))
      .listen(3000);
    
    cluster(server)
      .use(cluster.reload(['lib', 'tests', 'index.js']))
      .listen(3000);

    cluster(server)
      .use(cluster.reload('lib', { interval: 60000 }))
      .listen(3000);

    cluster(server)
      .use(cluster.reload('lib', { extensions: ['.js', '.coffee'] }))
      .listen(3000);

Ignore Directories:

 By default `reload()` will ignore the following directories:

  - node_modules
  - support
  - examples
  - test
  - bin

 Alter with `reload.ignoreDirectories`

     cluster.reload.ignoreDirectories.push('src');

@param {String|Array} files
@param {Options} options
@return {Function}
@api public