Add Pylint and fix pylint errors

This will be a massive epoch for the project. I'm attempting to add pylint to the tox file, which will add a lot of fairly strict requirements on the code. At the time of creating this pull requests pylint still fails, but I thought I'd make this now before literally every line of code in the project is changed.