Implement CI/CD pipeline for tox, build, and PyPI upload

Summary

Travis CI has stopped running jobs for this project. Rather than digging through old Travis accounts and configurations, it may be faster to re-implement those using GitLab's CI/CD. Accordingly, this issue tracks the creation of a GitLab CI config.

Needs

  • use tox to execute tests for the supported Python versions
  • build and publish the package at the end (if it hasn't already by published)
  • if feasible, use concurrency across the tox jobs
  • (stretch) run the test suite on the wheel (not the source code)
  • move mypy static analysis to dedicated jobs
  • perform each test on Linux, Windows, and (possibly) MacOS
Edited by Bryant Finney