Move reporting (Formatters) to a separate package.

* Reduce coupling while we're at it
 * Replace ResultsListener interface with TestSystemListener, so reporting only needs to depends on TestSystems
 * Probably fixed some issues with time measurement and exit codes.