refactor: use dependency injection
feat: allow plugins

// in testacular.conf.js
plugins = ['some-plugin']

The 'some-plugin' will be required as a node module, it needs to be DI module.

// some-plugin.js
module.exports = {
  'preprocessor:coffee': ['factory', function(){}]
};
refactor: move preprocessors and reporters to separate plugins
refactor(reporter): bind reporters inside reporter module
chore: just remove already fixed TODO
chore: extract launchers into plugins
chore: extract jasmine adapter into a plugin
chore: extract mocha adapter into a plugin
chore: extract quint adapter into a plugin
chore: extract requirejs adapter into a plugin
chore: extract angular scenario adapter into a plugin
chore: remove unused tasks for building adapters
test(client): clean up Emitter mock
chore: fix git commit-msg hook to work with git gui

Because git gui uses `GITGUI_EDITMSG` instead of `COMMIT_EDITMSG`.
style(reporter.teamcity): make jshint happy
fix(reporter.junit): Add browser log output to JUnit.xml

Make the JUnit adapter inherit from base
Push all log message into system-out element of the junit xml file.

Closes #302
feat(adapter.jasmine): remove only last failed specs anti-feature

This really seems to be anti-feature, as it only causes troubles.

Closes #148
chore(changelog): avoid writing empty sections
chore: update contributors
chore: release v0.5.11