Use plugin managers to manage the global and the channel plugins separately

This is a rewrite of how plugins are handled in the bot. Now there is a
root PluginManager with a child for every channel that the bot is in.
A new plugin will be initialized for each manager.

Since each plugin instance is now bound to either a channel or the
global manager it is easy to enable or disable plugins per channel and
also configure them per channel.

Individual channel configurations are done in the channels section of the
configuration file.