Willie should call modules' shutdown() function when shutting down

* added collection of shutdown methods from registered module
* unregistering module causes shutdown to be called
* made irc.Bot class a new-style class so Willie can call its parent's quit() method
* added documentation
Merge branch 'master' of git://github.com/maguro/willie into maguro

Conflicts:
	willie/bot.py

- Reverted moving of WillieWrapper. A nested class does not have to be
  declared before it is used, as it is already inside a class definition,
  which it self will not be used before it is fully declared.

- Corrected incorrect usage of super. The asynchat.async_chat.handle_close
  is not a class-method.
[core] Make module reloading call shutdown.

- Also make it delete the setup function if one exists.
- Remove unnecessary guards from unregister. If the function is on the list,
  then it is obviously of the correct type.
[core] Fix bugs related to shutting down too fast.

- Reverted back to old-style calling of parent methods. It might have fixed
  some issues I was having, I'm not sure. Anyway, asyncore is old-style so
  making subclasses new-style and using methods that only work on new-style
  classes is weird.
- Made the bot wait for acknowledgement after a QUIT message.
- Prevented Bot.hasquit attribute from being set when connection is closed
  for reasons other than being shut down intentionally.