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