Feature/venv

Added support for virtualenv. This is somewhat opinionated, so let me know if it should be changed or isn't valid:

* Virtualenv is stored in `venv` rather than `.`. IMO it's better for keeping the root folder uncluttered, but others would disagree.
* Set specific dependency versions to prevent bugs from changing libraries.
* Added a requirement for mock, which was needed for the tests to pass but wasn't specified as a requirement.
* Added a `Makefile`.