Let MessageFactory#new take a block to define new message types