Add `tox.ini` config with supported versions, and a new tox CI
workflow to run tox tests on master branch changes. This is "expensive"
so we may consider limiting execution further.
Ignore no-commit-to-branch check when running in CI workflow, since this check
is only relevant to running locally, and fails when running on master branch in
CI workflow.
Refactor the pre-commit and python test workflows into a single workflow
in order to use pre-commit check as a gate for Python tests. This will help
limit execution of Python tests.