This almost makes mypy happy. I did manage to step on a defect that
there really isn't a great workaround for so I resorted to disabling
typing there.
https://github.com/python/mypy/issues/2427
Decided to switch the tests to using asynctest so that we can guarantee
support on Python 3.7 and newer. Also added pins in setup.cfg and a
tox.ini file if you want to use it.