Add support for IRCv3 message tags
Add a message queue
Use socket.sleep(sec) instead of socket.select(nil, nil, sec)