Class Splitting

Split apart the various functionalities of the bot into seperate
classes, to make code control and possible threading easier.