feat: allow browser to reconnect during the test run

When a browser disconnects during a test run, Karma waits for reconnecting (configurable by `browserDisconnectTimeout`). If the browser reconnects in this timeout frame, nothing happpens - Karma replies the events (results) and the test run continues. If the browser does not reconnect in the timeout frame, Karma fails the build.

This should solve the connection issues with IE on polling.

- add browserDisconnectTimeout config property (defaults to 2000)

Internal changes:
- `Browser.isReady` is a function now, as browser has multiple states
- `BrowserCollection.setAllIsReadyTo` -> `setAllToExecuting`
- remove `Browser.launchId`, we use `Browser.id` instead

Closes #82
Closes #590
test(e2e): add a test for reconnecting
test(unit): remove the global "timer"
feat: buffer result messages when polling

Some browsers (Safari) starts loosing messages when sending too often (using xhr/html polling). Batching solves the issue.
feat: sync page unload (disconnect)
chore: disable browserstack e2e test
refactor: revert the browser.launchId to fix WebStorm plugin

This is just a temporary workaround to not break the WebStorm plugin.