Add nose to requirements.txt

I think travis ci has this installed by default,
but to run the tests locally nose has to be
installed.
Checking in work in progress on S3 support as well as a few other things.
Add nose to requirements.txt

I think travis ci has this installed by default,
but to run the tests locally nose has to be
installed.
Refactor auth module to use requests auth plugins

This also upgrades the requests version to the latest
(1.1.0).

One of the problems with the request auth plugins is
that the auth handlers are invoked on a more or less
prepared requests.  This means the query params have
been encoded and the post body params have also been
urlencoded.  This means that we have to re-parse the
query string and post body params, process/modify them
as needed, the re-urlencode them.  Not ideal.

Sigv2 auth handler implementation

Update sigv4 to use requests auth plugin
Update auth to use Request object

So originally I used the auth metchanism built into request 1.0 (the
auth param to the request.(get|post|etc.) method).  However, I ran into
a problem, which is that the auth plugins operate on a PreparedRequest,
which already have the query string/post body params urlencoded.
In order to do signature calculations, I had to re-parse the query
string and/or post body params into a dict, update the dict accordingly,
then re-urlencode the params.  Not ideal.

So then I started with using Request/PreparedRequest objects directly,
but then I ran into another issue, namely that I needed access to the
urlencoded post body for sigv4 (i.e the "payload" for the sha256).

So what I've done for now is to use our own AWSRequest class which
subclasses requests.models.Request.

This will allow us the flexibility to add whatever hooks/extension
points we want to the request/response going forward, and we
*should* be able to isolate ourselves from any changes that happen
in the request.models module (not sure how stable of an API this is).
Add signature version 3 (https)
Fix relative import error in Python 3.x.
Removing print statement from unit test that was blowing up on Python 3.x.
py3 bug fix, use absolute import for exception
Remove TODO, HmacV1Auth works with requests 1.1.0
py3 bug fix, decode bytes type to str for sigv3
py3 bug, encode strings before hashing
Allow for use of temporary credentials.
Resolving merge conflicts.
Add tox config file
Merge branch 'tox-config' into develop
Add sigv4 test suite

AWS provides a test suite for sigv4 that includes sample requests and
the expected signatures.  I've integrated that into the test suite for
botocore.

I had to update the auth module to accomodate some of the sigv4 test
cases, the two big changes being to support multiple headers with the
same key.

There were also tests that include query params with duplicate keys
(e.g. 'foo=bar&foo=baz'), but given that no AWS services support this,
and no SDKs support this, I'm ignoring those tests for the time being.

Also, for python2.x, the HTTP parser didn't support parsing header
values with duplicate keys so those tests are ignored on python2.x.

Verified that all unit tests pass in py26,py27,py32,py33.
Merge pull request #18 from jamesls/nose-requirement

Add nose to requirements.txt
Merge branch 'sigv4-testsuite' of git://github.com/jamesls/botocore into jamesls-sigv4-testsuite
Fixing a bug in JSONEndpoint.  Fixes #23.