Refactor calls to requests_request, pycurl_request, etc

In request_raw, use a dict of functions instead of an else if ladder.
Requests return dict objects with body, header, code properties

Affected functions: raw_requests, requests, interpret_response,
handle_api_error. The request function still returns the same type of
object.
Add test for rate limiting errors

Use package httmock to produce mock http response objects to pass into
interpret_response and verify that the correct error is raised
(TooManyRequestsError).
Refactor http response object

The response object (dictionary with keys 'body', 'header' and 'code')
now has its key 'header' renamed 'headers'.

Removed a couple of extraneous variable bindings.
Clean up TooManyRequests test
Pass headers from urllib,pycurl,urlfetch along to interpret_response

The headers are passed along in whatever format the http libraries
return them in.
Refactor TooManyRequestsErrorTest

Use a lambda instead of defining a function for assertRaises and remove
unnecessary comment.
Add requirements file for travis

In order to install httmock.
Add comment to TooManyRequestsErrorTest

Comment explaining the mock http function.
Merge branch 'master' into support_rate_limiting_py

Conflicts:
	.travis.yml
Add test/requirements.txt to drone.yml script

That is: pip install -r test/requirements.txt
Record error message in TooManyRequestsError

Now, if a TooManyRequestsError is thrown, it will include the error
message ('Too Many Requests'), as well as the properties defiend in
CleverError.
Clean up tests for Too Many Requests error
Update README.md

Grammar.
Remove unnecessary import
Merge branch 'master' into support_rate_limiting_py

Conflicts:
	.drone.yml
Merge pull request #18 from Clever/support_rate_limiting_py

Support rate limiting python