Big refactor (testing required)

This is the pull request of [my refactor](https://github.com/deanoemcke/thegreatsuspender/issues/131).

This is as far as I plan to go with the code. In general most of the big problems I've found have been fixed.

You can merge if you like or just use it as reference to change the code in the future, slowly.

While I haven't found any big problems but it's a good idea to test out all the features in order to make sure everything works correctly.