Add IRC command classes and a command manager.

Each command defined by the client is now its own class that extends
the abstract IRC command class. The command manager handles processing
for the message handler and it manages registration of commands.

This design pattern keeps handling commands clean, especially with
callbacks, and it easily allows for adding additional commands later on.