fix(watcher): watch files that match watched directory

Closes #521
fix(launcher): ignore exit code when killing/timeouting

Most of the browsers returns "not-normally" (because of receiving a signal) and therefore exit event gets null exit code. But PhantomJS exits "normally" with status code 1 (after receiving TERM signal).

I think this logic is better - show error, if process exits during a state which does not expect exiting (CAPTURED, BEING_CAPTURED).

Closes #444
fix: capturing console.log on IE

Use Function.prototype.apply.call(log, ...) instead of log.apply(...)
to avoid an error when IE's console is open.

Closes #329
Merge pull request #538 from gfxmonk/console-log-apply-fix

fix karma.js: Fix for IE's console.log's lack of `apply`
feat(client): capture all `console.*` log methods
Merge pull request #548 from gfxmonk/patch-all-log-methods

feat logging: patch all available `console.*` log methods
docs: fix link to config file
feat(config): allow configurable launchers, preprocessors, reporters

karma.defineLauncher('my_chrome', 'Chrome', {
  flags: ['--start-maximized']
});

karma.definePreprocessor('coffee_bare', 'coffee', {
  options: {
    bare: true
  }
});

karma.defineReporter('html_coverage', 'coverage', {
  ...
});

The reason, why I decided for this solution, rather than inlining like this:
browsers = [{
  type: 'Chrome',
  flags: ['--start-maximized']
}];

Is that the solution above allows using these custom launchers from CLI. It also makes it easier to create only a single instance of a preprocessor (if the configuration is the same).

Closes #317