docs(intro): fix a typo

Closes #839
feat(browser): improve logging
fix(config): apply CLI logger options as soon as we can

We use logging even before parsing the config file - for instance to show the path of the config file that is actually being loaded. At that time, we can't configure the logger based on the config file, but we can already apply the command line arguments.
fix(config): ignore empty string patterns

An empty string pattern is a mistake - there is no reason to do that. It can however happen (for instance when you generate the config file).

Before this fix, Karma would try to watch this empty string pattern, which would result in watching the entire `basePath` directory.

Now, the pattern will be ignored and a warning showed.
test(e2e): add a test for coverage of coffee script files
docs(intro): fix formatting
feat(client): show error if no adapter is included

Before this fix, Karma would just execute "an empty" test suite. The next run would however end up with an exception (Property "start" is not a function).

This should make it easier to understand.
feat: make autoWatch true by default

I think this should have been `true` since the beginning, really not sure why it was not.

BREAKING CHANGE: `autoWatch` is `true` by default. If you rely on the default value being `false`, please set it in `karma.conf.js` explicitly to `false`.
test: fix config unit tests

This should have been part of 8454898c5e2b56cb81f0c808153b5f82cfac62a4
fix(preprocess): set correct extension for the preprocessed path

Closes #843
feat(web-server): cache preprocessed files

Now Karma does not write preprocessed files into disk (as the web server would read them) and store that in memory. Especially when running with multiple browsers (each browser has to fetch the file), this saves FS access (1 write per preprocessed file; x reads per preprocessed file, where x is number of captured browsers).

This is in trade for slightly higher memory usage. I however tried AngularJS with this change (forcing all the files to be processed/cached) and the memory consumption was not significantly higher.

We can optimize this to clean up the cache, especially if there is only a single browser captured
feat(web-server): use SHA hash instead of timestamps

Heavy caching relies on SHA of the content rather than mtime timestamps.

Benefits:
- touching a file (without changing content) does not re-fetch the file
- reverting a file does not re-fetch the file (browser will use the previous cache)
- changing preprocessor configuration does invalidate cache (Closes #520)
chore: update dev deps to use regular npm packages

As we don't need these unreleased ones anymore...
chore(travis): use "dots" reporters and disable debug logs
docs(troubleshooting) - Add a troubleshooting section

I've spent a lot of time reading Karma issues. I think it would be nice if there was a troubleshooting section with steps that people could follow to try to debug common issues. What do you guys think?

CLA signed: Rob Dodson
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