This includes a very large number of related changes, as I upgraded the dependency list at the same time. Currently we do not handle releases, that's coming in a followup.
* Use black, flake8, and isort instead of just flake8
* Reorganize requirements for simplicity
* Update some rules
* Add a script for automatically fixing linter errors
* Add some docs on linting
* Run travis linter on python 3.6