Rework cloudbot.py

This patch reworks cloudbot.py to use a 'CloudBotWrapper' class, instead of just having everything outside of classes. This also makes it so cloudbot.py won't run if `__name__ != "__main__"` for support with documentation creation and stuff like that.

This also, along with the other PRs currently open to refresh, fix restarting support for the bot.