Get data dir from bot, not static variable
config.py changes: - Specify type in docs - Declare self.observer and self.event_handler in __init__, without assigning - Change usage of self.bot.instances to self.bot.connections
Format loader.py, and add type specifications to docs
Format and add type specifications to doc strings in irc.py
Lots of changes to main.py:

- Rework Input class to not be a dict - this changes the structure a bit, but doesn't mean less usability
- Also change dict(input) to input.__dict__ in plugins/log.py to be compatible with that change
- Change the complicated double-negative autohelp statement to one that makes more sense
- Add input type strings to all function documents
- Add a more complicated argument checker for plugin functions. Supports new and old format
Merge pull request #234 from daboross/patch-non-static-data-dir-namegen

Get data dir from bot, not static variable
Merge pull request #235 from daboross/patch-config-documentation

Update config.py
Merge pull request #236 from daboross/patch-loader-documentation

Update loader.py with documentation
Merge pull request #237 from daboross/patch-irc-documentation

Update and format irc.py with documentation
Merge pull request #238 from daboross/patch-update-input

Update and format main.py
Rework cloudbot.py to use a 'CloudBotWrapper' object. Also make it not start if __name__ != "__main__"
Sleep for 1 second before restarting
Fix logger re-initialization when restarting
Initialize PermissionManager in irc.py instead of bot.py
Don't run config reload event if bot is no longer running. This adds better support for restarting to config
Three fixes in main.py

- Fix printing the Input to console
- Make Handlers stop waiting for a new thing to handle if the bot has stopped
- Only show first line of plugin documentation for autohelp, instead of attempting to show all of them
Three fixes for permissions

- Add debug printing when allowing someone
- Return True or False from has_permission rather than the builtin 'input'
- Add a few more methods to get stuff
Re-order the checks in core_sieve so they all function correctly (fixes permission checking for commands)
Generic plugin updates - TODO: More of these, and fix this