github: added query to check github status
Merge remote-tracking branch 'jdowner/github'
github:  only print last message, encode utf-8
python-requests-1.2.3 api change
linker:  expand twitter links
bot:  abstract channels

Move channels to their own class.  This greatly simplifies the lines of
code in the protocol per line received as well as allowing per-channel
configuration.  Currently said configuration is just for the used
plugins.
bot:  fix format string
bot:  set lineRate to prevent excess flood

Via testing, 0.5 seems to be the lowest we can get away with.
linker:  remove SyntaxWarning about global
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.
plugins:  add source plugin

Sometimes you just want to refer to the source, othertimes you just want
to make sure the bot can refer people correctly.