feat(runner/launcher): major runner updates to allow multiple capabilities

Adding simultaneous runner capability (grid-style), refactoring launch/runner init system,
and abstracting out configParser module.
refactor(launcher): some launcher clean-ups and refactors

Simplify the ConfigParser and remove the config map for now.
Add unit tests for the ConfigParser and runner, and an integration test for driverProviders.
Make sure the promises returned by the runner all chain nicely.
Make sure the exit code for the entire launcher process is correct.
Change the config so that multiConfig set must be explicit - this prevents weird
issues from merging objects into arrays.
chore(sauce): get sauceLabs working after the runner refactor
style(lib): style fixes, mostly adding semicolons
test(multicapabilities): add tests which run a config with multiCapabilities
chore(travis): run a multiCapabilities test on Travis, which will test firefox and chrome
fix(runner): remove lingering reference to userConfig
chore(chromedriver): update to version 2.9 of ChromeDriver
fix(runner): runner should wait for updateJob to finish before exiting

Closes #525
refactor(launcher): launcher outputs dots when child processes report data

This avoids huge waits where it looks like things have stalled.
Closes #524
feat(protractor): add removeMockModule method
chore(release): fix Travis configuration so that sauce tunnel is properly passed
fix(launcher): make child runner environments inherit from main environment
docs(browser-setup): Update PhantomJS Setup Info

-Added information about passing CLI arguments to PhantomJS

Contributes to #150
docs(browser-setup): add notes about multiCapabilities
refactor(launcher): make launcher use child process messages instead of messing with the env
docs(debugging.md): fixed screenshot sample code
docs(debugging): fix typo and command to start element explorer
chore(release): changelog and version bump for 0.19.0
chore(release): fix changelog typo from 0.19.1 to 0.19.0