Always perform str() on output from eval
Might help to assign on_stop instead of on_start twice
Fix messaging in private message
Add 'error in' message when something errors
Remove connection.readable_name, make connection.name more readable. Also, replace in-memory channel logging with storing logs in redis database.
Log ourselves quitting
Remove the concept of a 'plugin' object, just add all hooks directly to the plugin manager. This also removes the ability to unload a plugin.
Add () explicitely to the @hook.sieve in plugin_sieve
Remove __str__ implementations from *Hook classes. Also remove some __init__ methods that don't do anything but call super().__init__
Simplify hook.py a ton, having the decorators be classes with __call__ implemented.
Return function from __call__, so it actually registers.
Update types in plugin.py to the new hook types
Reorder *Hooks in plugin.py. Doesn't actually change anything they do, just order in file.
Update instance of plugin_hook to bot_hooks
Fix shutdown hooks
Fix command hooks
Update regexes to work