A big cleanup.

- Use Pipenv for local development tasks in a virtualenv.
- Replace fabfile with Pipfile "scripts".
- Update .gitignore.
- Add lots of checks using pre-commit.
- Format code using Black.
- Use PEP 396 version tracking.
- Use bumpversion for tagging new versions.
- Fix issues found with Flake8, pylint.