Use Message objects internally and pass one to Do* hooks
Add support for IRCv3 message tags
Add a message queue