feat(helper): Improve useragent detection.
By using the module 3rd-Eden/useragent instead of a homegrown solution
we are able to parse a much wider range of useragent strings.
Fixes #373, #318.
Merge pull request #474 from Dignifiedquire/feature-useragent

feat(helper): Improve useragent detection.
chore(deps): set di dependency to a version rather than github repo

Closes #517
Closes #519
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