Improve test reporting

- add more callbacks to Suite.run()
- don't expose Context class
- remove StreamLogger
- create abstract class Logger