feat: add `browserDisconnectTolerance` config option

This adds a new config option `browserDisconnectTolerance`.
docs/config/01-configuration-file.md for more information.

When `browserDisconnectTolerance` is set to 1 and a browser disconnects during a test run, Karma will restart the browser and run the tests again. Only if the browser disconnects again, it will be treated as a failure.

Based on #777.
docs(config): add missing docs for `browserDisconnectTimeout`
refactor(browser): move "result converting" into Result object
refactor(browser): rename browser.onReconnect -> browser.reconnect

This method is not called as event listener on the socket.
refactor(browser): extract Result and Collection into a separate file
refactor: all file names lowercase and snake_case

This is the Node's convention.
style: make jshint happy
WIP: squash renaming