feat(launcher): Add support for maxSession

  - add support for maxSession and capability-specific specs
  - cleaned up launcher (refactored out taskScheduler.js)
  - (breaking change) changed the config to shard test files; also sharding is specific to capabilities now
    - Before: config.splitTestsBetweenCapabilities
    - Now: config.capabilities.shardTestFiles or config.multiCapabilities[index].shardTestFiles
test(selenium): add a mock driver provider for integration testing

With `mockSelenium: true` in the config, an instance of WebDriver using a
fake executor will be used. This executor returns a successful test response
for any command, and never connects to a real browser.