code: function Config(rules, options) {
      this.options = {};
      if (options) { options.forEach(this.addOption.bind(this)); }
      this.rulesMap = {};
      if (rules) { rules.forEach(this.addRule.bind(this)); }
  }
docs: The config object stores all possible rules and options and manages
  dependencies based on which options are enabled.
  As it runs, it updates the subscribers array for each rule to indicate
  the active rules and options depending on it.
  @constructor
  @param {Object[]} rules - The rules to use.
  @param {Object[]} options - The options.