Restructe the plugin system

Plugins are now singletons which are instantiated once for the whole
run-cycle. Instead of the channelName in the export, they now get a
channel for each messageHandler and command.

Also introduced new join and interval callbacks in plugins.