Handle disconnect events

Prior to this commit, disconnect events weren't getting picked up on properly
which resulted in plugins not getting shut down and re-activated on reconnection.

Additionally, it was also causing already loaded commands to be reloaded again,
resulting in clashes like the following:
"XMPPBackend.reload clashes with XMPPBackend.reload so it has been renamed
xmppbackend-reload"

This commit adds a listener for the disconnected event from sleekxmpp and triggers
disconnect_callback() when received, ensure a proper unload/reload of plugins.
Update code commenting

It's a little more descriptive to have a docstring than a line
of comment
Merge pull request #147 from zoni/disconnect_callback

Handle disconnect events