Use tox to handle the testing and enable coverage

* Bring the testing up to snuff using tox ~~and require 100% coverage~~.
* ~~Fix flake8 failures that existed in the code base.~~
* Adjust travis to run tests using tox.
* Travis's PyPy has supported CFFI for a long time now.
* ~~Use six to handle compat instead of copy/pasting things ourselves~~ (See #20).