function Runner (suite, delay) {
  var self = this;
  this._globals = [];
  this._abort = false;
  this._delay = delay;
  this.suite = suite;
  this.started = false;
  this.total = suite.total();
  this.failures = 0;
  this.on('test end', function (test) {
    self.checkGlobals(test);
  });
  this.on('hook end', function (hook) {
    self.checkGlobals(hook);
  });
  this._defaultGrep = /.*/;
  this.grep(this._defaultGrep);
  this.globals(this.globalProps().concat(extraGlobals()));
}
Initialize a `Runner` for the given `suite`.

Events:

  - `start`  execution started
  - `end`  execution complete
  - `suite`  (suite) test suite execution started
  - `suite end`  (suite) all tests (and sub-suites) have finished
  - `test`  (test) test execution started
  - `test end`  (test) test completed
  - `hook`  (hook) hook execution started
  - `hook end`  (hook) hook complete
  - `pass`  (test) test passed
  - `fail`  (test, err) test failed
  - `pending`  (test) test pending

@api public
@param {Suite} suite Root suite
@param {boolean} [delay] Whether or not to delay execution of root suite
until ready.