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`.
Merge branch 'master' into using-di

Conflicts:
	adapter/jasmine.src.js
	adapter/require.src.js
	adapter/require.wrapper
	junit-schema.xsd
	lib/config.js
	lib/preprocessors/Coverage.js
	lib/reporter.js
	lib/reporters/Coverage.js
	lib/reporters/JUnit.js
	package.json
	test/client/jasmine.spec.js
	test/client/testacular.conf.js
	test/e2e/angular-scenario/testacular.conf.js
	test/e2e/basic/testacular.conf.js
	test/e2e/coffee/testacular.conf.js
	test/e2e/mocha/testacular.conf.js
	test/e2e/qunit/testacular.conf.js
	test/e2e/syntax-error/testacular.conf
	test/unit/reporters/Coverage.spec.coffee
chore: Update package.json to use the github version of di.
style(config): Make jshint happy.
Switch from __defineGetter__ to Object.defineProperty.
test(preprocessor): fix the unit tests after DI refactoring
refactor(preprocessor): remove unused requires
test(reporter): remove unused require/mock