Handle disconnect events

Prior to this, 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 adds a listener for the disconnected event from sleekxmpp and triggers
disconnect_callback() when received, ensure a proper unload/reload of plugins.

Additionally, I also changed a few lines of comments to docstrings to be a little cleaner.