Refactoring, small fixes

Also changed setup.py to use setuptools, so that it'll properly check for and upgrade to the latest Requests version.