setup = function setup(options = {}, callback) {
  options = _.merge(defaultOptions, options);

  // Uses schemas to create models for the db connection to use
  factSystem.setupFactSystem(options.mongoURI, options.factSystem, (err, coreFactSystem) => {
    if (err) {
      return callback(err);
    }

    const db = connect(options.mongoURI);
    const logger = new Logger(options.logPath);
    const coreChatSystem = chatSystem.setupChatSystem(db, coreFactSystem, logger);

    const instance = new SuperScriptInstance(coreChatSystem, coreFactSystem, options);

    /**
     *  When you want to use multitenancy, don't return a bot, but instead an instance that can
     *  get bots in different tenancies. Then you can just do:
     *
     *  instance.getBot('myBot');
     */
    if (options.useMultitenancy) {
      return callback(null, instance);
    }

    const bot = instance.getBot('master');
    if (options.importFile) {
      return bot.importFile(options.importFile, err => callback(err, bot));
    }
    if (options.importJSON) {
      return bot.importJSON(options.importJSON, err => callback(err, bot));
    }
    return callback(null, bot);
  });
}
Setup SuperScript. You may only run this a single time since it writes to global state.
@param {Object} options - Any configuration settings you want to use.
@param {String} options.mongoURI - The database URL you want to connect to.
                This will be used for both the chat and fact system.
@param {Object} options.importJSON - Use this if you want to re-import from JSON Object. 
                Otherwise SuperScript will use whatever it currently finds in the database.
@param {String} options.importFile - Use this if you want to re-import your parsed
                '*.json' file. Otherwise SuperScript will use whatever it currently
                finds in the database.
@param {Object} options.factSystem - Settings to use for the fact system.
@param {Boolean} options.factSystem.clean - If you want to remove everything in the
                 fact system upon launch. Otherwise SuperScript will keep facts from
                 the last time it was run.
@param {Array} options.factSystem.importFiles - Any additional data you want to
               import into the fact system.
@param {Object} options.scope - Any extra scope you want to pass into your plugins.
@param {Boolean} options.editMode - Used in the editor.
@param {String} options.pluginsPath - A path to the plugins written by you. This loads
                the entire directory recursively.
@param {String} options.logPath - If null, logging will be off. Otherwise writes
                conversation transcripts to the path.
@param {Boolean} options.useMultitenancy - If true, will return a bot instance instead
                 of a bot, so you can get different tenancies of a single server. Otherwise,
                 returns a default bot in the 'master' tenancy.
@param {Number} options.conversationTimeout - The time to wait before a conversation expires,
                so you start matching from the top-level triggers.