Done:
* DCC CHAT min user level
* Lots of hooks related stuff that I never wrote down
* Abstract DCC support so that DCC FILE may be easily implemented
* Wrote config database class
* Compile without warnings
* bot:protection/[none|no-ban|no-kick|no-deop] constants
* bot:aop/[no|yes] constants
* Utils::valid_nickname_p should have a configurable max nick length
* More detailed script error reporting
* Commands::sendCTCP, Commands::sendCTCPReply

2.2:
* Finish Texinfo manual
* Finish adding commands to Scheme for sending messages
  (e.g. bot:send-CTCP to send a CTCP message)
* Add util functions for doing stuff like quoting CTCP messages
* Finish adding hooks/send hooks
* Add DCC_CHAT_END hook for Scheme

2.4: 
* Use configuration database class
* Extend AOP to support +v (0 = no op, 1 = +o, 2 = +v)
* Add !setcommandlevel (move ScriptCommands implementation to Commands
  and add a UserCommands)
* Improve the help system

2.4/3.0 (2.4 iff backwards compatibility is maintained, 3.0 otherwise):
General:
* Eliminate String class
* Finish converting UserCommands to use Commands
* Audit code and see what data in classes should be made private and
  have getters/setters added (e.g. logFileName in Bot--if this is
  changed the log file doesn't change after the Bot is started).
* DCC FILE support (sending and recieving)
* Possibly convert BotConfig to use boost::any instead of std::string
  as t_value
* Remove StrinkTokenizer, replace with boost::tokenizer
* Remove string procedures from Utils, replace with boost::string_algo
* Use boost::timer for internal timers

Scripting:
* Add commands to delete a hook
   - return an iterator to the Hook
   - this would require a new SMOB to be created
   - Scheme could pass Hook objects around and do nifty things
   - At least allow all hooks of a type with the same name field to be
     deleted at once (also all hooks with the same name). Also allow
     deleting based on the regexp

Networking:
* Add a networked interface to guile repl
   - This can (should) be done as a script, but requires non-coop threads
     support to be done easily (and thus requires Guile 1.8)
   - Admins only
   - Telnet
   - Store authorized users and passwords in bot.telnet file
   - Bot master can add new telnet users
   - MUST HAVE PASSWORD
* See if Socket::readLine could be sped up (profile it first to see if
   it even matters)

Definitely 3.0:
* Remove gh_* when Guile 1.8 is released
* Replace large select-loop in Bot::waitForInput with multithreaded
   - To clarify: There will be one thread for DCCs and another thread
      for the current irc server connection, each with its own select
      loop. There may also be a thread for the network repls if I
      implement those.

Maybe:
* New config values in config db should be added before old values
   (this is faster but breaks the way server lists work in 2.x)
* Make it possible to use Scheme functions in the Parser itself