Reporters module

Reporters module now is decoupled from the core module. It becomes easier for modifying existing reporters and writing custom reporters. 

The reporters handling in core module is modified to leverage this change. The report type option is used to extend and choose a reporter.