bot:  reconnect on failed connection

and pause before reconnecting.
plugins:  remove help plugin

plugin was rather useless and will be replaced.
bot:  create plugin class

Create a plugin class which will be registered with configured channels.
This will now require that every plugin is derived from plugin.Plugin.
Therefore, all previous plugins are broken until being ported over.

This will simplify the loading and writing of plugins as well as allow
more configuration options for the bot.

Also, finally added unittests.  First up, the plugin unit test.
startup:  port to new plugin class

and add unittest
cah:  port to new plugin class

and add unittest.
github:  port to plugin class

and add unittest.
karma:  port to plugin class

and add unittests.
linker:  port to plugin class

and add unittest.
sup:  port to plugin class

and add unittest.
weather:  port to plugin class

and add unittest.