A lot of lines removed by introducing a base class for messages

I'm sure you'll accept it. See if you like it. It makes message classes much smaller and harder to forget to add the `accept` method which is the same everywhere. I'm also initializing member variables at definition to remove ctors altogether. Can't test if GCC can compile that.