Add testing configuration:
- pytest as test framework
- tox for creating testing environments and running tests (run with `tox`)
- pytest-asycio for asyncio testing
- coverage/pytest-cov for measuring test coverage
- flake8 for pep8 checking
I've also added one quick example test demonstrating basic unit testing
and use of the basic fixtures and marks provided by pytest-asyncio.
Just this already covers a suprising 32% of the codebase, mostly through
imports, but I wouldn't expect it to be helpful yet. This should provide
a good base to build on in the future though.