Add some understanding of the IRC protocol, and tests for these.

This causes a regression in that we no longer respond to pings; this should
probably be done at a higher level now.
Use a struct instead of an enum for IrcMessages. We can use these for
both ends of communication.
Add the ability to generate IRC lines from IrcMessage objects.

This will open the door to using these objects to talk back to the server.
There's an awful lot of trusting the message producer here. Appropriate?