First part of basic Modules infrastructure

Add base classes for modules
A module is essentially a factory, creating instances of context
for each connection that passes through them.

Note that nothing is connected yet.
Bring modules live. Add basic commands module.

Make the modules infrastucture functional.
Fix some logging and getattr bugs.

The basic commands module adds these commands to the bot:

Both private and public commands:
- echo Echo the message to originating user or channel.
- say  If given the command through a channel, echo the message to
       that channel. If given the command in private, echo through
       all the channels the bot is a member of.

Private only commands:
- disconnect Disconnect from the server. It will try to reconnect.
- die        Quit in a timely fashion.

Of course, the bot will comply to all requests since we don't have
an authorisation scheme in place.
Document the modules infrastructure

Lots and lots of documentation!
Make various enhancements in modules

- Make module importing more robust
- Expand the logging format to show source
- Remove default behaviour for commands in bot
  now that a module handles it
- Check if there's an actual message for echoes
- Make module level `send` usable