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.
Um, I don't know? I'm not sure what that directive is.