Rewrite of the messages stuff.
There is now an `Event` class that is passed to the event handlers. A `Message` class also exists and an instance is passed to `Event::message` on creation.
Rewrite of much of the tests to support the new structure.
I'm much happier about this.