Refactor to the Rescue

Major refactor of given code. General primitives are mostly the same (if renamed) and I attempted to stick with the original structure as much as possible. I focused on making the code compatible with PEP8 as well as separating concerns and decoupling. All original functionality should be present. I did comment out the function that reports playback as well as all invoking code, but everything is commented with a '# TODO: Some message' comment to explain.