v3: increase test coverage
Closes #141 (closed).
Total coverage increased from 75% (in v3, which already has most of the tests described in #141 (closed)) to 80%. This finishes up the full list of things I decided were worthwhile to test after coverage inspection (100% is, IMO, diminishing returns for a lot of work).
There are some bugfixes found from writing the new tests, as well as a bump for CI/tox's python version (3.9, as I found a testing bug in 3.7), and all of our dependencies.