function Mocha (options) {
  options = options || {};
  this.files = [];
  this.options = options;
  if (options.grep) {
    this.grep(new RegExp(options.grep));
  }
  if (options.fgrep) {
    this.fgrep(options.fgrep);
  }
  this.suite = new exports.Suite('', new exports.Context());
  this.ui(options.ui);
  this.bail(options.bail);
  this.reporter(options.reporter, options.reporterOptions);
  if (typeof options.timeout !== 'undefined' && options.timeout !== null) {
    this.timeout(options.timeout);
  }
  if (typeof options.retries !== 'undefined' && options.retries !== null) {
    this.retries(options.retries);
  }
  this.useColors(options.useColors);
  if (options.enableTimeouts !== null) {
    this.enableTimeouts(options.enableTimeouts);
  }
  if (options.slow) {
    this.slow(options.slow);
  }
}
Set up mocha with `options`.

Options:

  - `ui` name "bdd", "tdd", "exports" etc
  - `reporter` reporter instance, defaults to `mocha.reporters.spec`
  - `globals` array of accepted globals
  - `timeout` timeout in milliseconds
  - `retries` number of times to retry failed tests
  - `bail` bail on the first test failure
  - `slow` milliseconds to wait before considering a test slow
  - `ignoreLeaks` ignore global leaks
  - `fullTrace` display the full stack-trace on failing
  - `grep` string or regexp to filter tests with

@param {Object} options
@api public