Made report() public so that we can extract an interface for it.
Introduced an interface for report() so that I can make it a parameter to Game's ctor.
Game now reports using an embedded Reporter.
Introduced a field for Game's reporter.
Moved initialising the Reporter up into Game's constructor.
Introduced Reporter as a delegate from Game.
Removed obsolete code.
We can now use the SilentReporter from EVERYWHERE!
We can now inline Game.report().
Game.report() is GONE.