Update requirements, setup.py and add flake8

Needs `license` and trove classifiers
I experimented with this. I seem to remember that it worked better this way round, but I can't remember why!