feat(init): improve the questions a bit
chore(init): add some todos
feat: simplify loading plugins using patterns like `karma-*`

Now it's possible to load all sybling npm modules through:
plugins = ['karma-*'];

This is also the default configuration.

I hope in most of the cases, people should not have to worry about specifying plugins at all.

This commit also extracts the plugin loading logic into a separate module.
chore(config): add some todos
refactor(init): rely on autoloading the plugins

Do not generate the list of plugins and rather rely on the default config (karma-*).
fix(init): generate correct indentation

This is just a style thing - the generated config file is now correctly indented.
feat(init): generate coffee config files

If the file is *.coffee, generate CoffeeScript config file.
style: add empty lines to config specs
feat(config): add warning if old constants are used

To make upgrading to the new config syntax easier.
fix(logger): configure the logger as soon as possible

This is a tricky problem - we need to show some logs even before parsing the configuration. At that point, we don't know what the logger configuration is.

This sets the reasonable defaults at the very beginning (rather than log4js verbose defaults) and then, sets the user specific settings as soon as possible.
style: make the karma.conf.coffee more coffee-like
test(init): fix unit tests after 5fc17957
test(init): remove obsolete unit test after 3113919c
test(config): get rid off warnings

These tests were using very old config syntax and relying on autocorrection. After changing the logger config, these were shown during unit tests.
test(e2e.requirejs): update config syntax

To get rid off the warning.
style(init): make jshint happy
fix(launcher): handle ENOENT error, do not retry

If the binary does not exists:
- handle the error (Node 0.10+ throws unhandled error events)
- show nicer message
- do not retry

Closes #452
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