Convert tabs to spaces.
Put bot commands into dict instead of using separate class.
Remove special case for stdout in logger.

Just use sys.stdout as file.
Tell server we're a bot (set umode +B).
Simplify PRIVMSG handling.
Handle CTCP ACTION similarly to normal PRIVMSG.
Keep track of information about users/channels.

Add two classes User and Channel to represent these. Use WHO instead of
WHOIS to obtain away information (much more efficient).
Let dispatch() take care of sub-commands and generate help messages automatically.

TriggerBot.__bot_commands is now keyed by tuples.
Update "admins" command.
Update commands to use User/Channel information.
Open log file only once.
Save and load bot state.
Fix reporting of unknown commands.
Stem trigger words.

Stemming removes bits like "-ing" and "-ed".
This adds Xapian as a dependency, to use its stemmer.
Don't hold on to the factory reference.
Display an error when a super-command is used.
Don't use isinstance.

It's not "Pythonic". And besides, it breaks with cPickle.
Various small fixes.
Send rules to the right place!
Clean up top-level code.