constructor(config={}){
    this.instrumentationData = {};
    this.injector = new Injector(config.viaIR);
    this.modifierWhitelist = config.modifierWhitelist || [];
    this.enabled = {
      statements: (config.measureStatementCoverage === false) ? false : true,
      functions: (config.measureFunctionCoverage === false) ? false: true,
      modifiers: (config.measureModifierCoverage === false) ? false: true,
      branches: (config.measureBranchCoverage === false) ? false: true,
      lines: (config.measureLineCoverage === false) ? false: true
    };
  }
Top level controller for the instrumentation sequence. Also hosts the instrumentation data map
which the vm step listener writes its output to. This only needs to be instantiated once
per coverage run.