Done (2.2):
* 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
* Add DCC_CHAT_END hook for Scheme
* Implement ctcp-quote

Solved By  Inactivity:
* Remove gh_* when Guile 1.8 is released
  Guile 1.8 was released ages ago; no need to put this off to 3.0
* Add a networked interface to guile repl
  Guile Debugging Server (GDS) does a fine job of this albeit only
  intentionally on the localhost. The bot is not particularly
  threadsafe and so the usefulness of GDS is limited...

2.4: 
* Finish converting UserCommands to use Commands
* Eliminate String class
* Make internals threadsafe
  - Need to lock *List, Hooks, and ServerQueue it seems
* Convert Hooks and ServerQueue to internally use a std::priority_queue<>
* 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
  - Generate help dynamically rather than using a static file
  - Commands register help entries
* Enhance the scripting layer
 - Implement ctcp-dequote
 - Finish adding commands to Scheme for sending messages
 - Finish adding hooks/send hooks
 - Add commands to delete a hook
 - Saner module loading
 - Higher level interface (e.g. define-command NAME (ARGS) vs define +
   bot:addcommand)
 - New API in module (bobot++ FOO) instead of (bobotpp ...) to allow
   old script to continue working with the old interface
* DCC FILE support (sending and recieving)
* Finish configuration database class
* Finish Texinfo manual

2.4/3.0 (2.4 iff backwards compatibility is maintained, 3.0 otherwise):
General:
* 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).
* 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

Definitely 3.0:
* 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:
* Make it possible to use Scheme functions in the Parser itself