Refactor base API

- Use requests for core HTTP communication
- Streamline things considerably
- Use distutils for setup.py
- Create base tests for httmock.api
- Clean up the APIError exception
- Validate the API token value passed in when constructing a APIRequest instance
- Idiomatic use of logging/logger
- Add __repr__ to APIError