update config example

Updates the config example to be valid and renames the file to
example.config.yml to remove autocomplete collision between config.yml
and the example config.
load plugins by config

The plugins are now loaded if their are in the plugins config. For
example to load the op plugin it is required for the config to contain:

plugins:
  op:
Fix issues after re-exec

 - @bot.channels was not filled after a re-exec
 - Write the NAMES command directly to the socket. If it is queued (as
   it was), other messages may be processed too early which may cause a
   dead-lock.
 - The list of joined channels are saved before re-exec, and used
   afterwards, instead of using the config. This is because the config
   may have changed, so joined channels are no longer in the config.
 - The IRC mask of the bot is saved before re-exec, and used afterwards.
   This is done instead of using @bot.mask, as that is not ready at that
   point.
add plugins examples to example config
use the name of the config section as plugin objects
refactor list_plugins, use String.constantize
Merge pull request #2 from relekang/config

update config example
unpack values while iterating over plugins config
replace list_plugins with a mapping of keys in plugin config
Merge pull request #3 from relekang/plugin-loading

load plugins by config
Merge remote-tracking branch 'trygve/re-exec'
Specifying that I am not the only contributor.
Correcting the copyright year.

This project was actually started in year 2014 and the previous number was just a mistake.
add update plugin

Calls git pull and bundle update before sending HUP to the bot
process. Requires the user that sends '!update' to be op of the channel.
use IO.popen instead of open3.popen3
use pm for detailed update messages
move reload to a seperate command
move raise StepError to invoke_command
remove require 'open3'
add send HUP to update command