Include x-amz-security-token in s3 during signing

To quote the documentation:
```
If you are signing your request using temporary security credentials (see Making Requests),
you must include the corresponding security token in your request by adding the
x-amz-security-token header.
```

It wasn't included in headers before, and s3 couldn't be accessed with
the temporary token. Luckily this commit fixes that.
Merge pull request #36 from libc/s3_iam_fix_signing

Include x-amz-security-token in s3 during signing
do not close response until buildError finishes

`s3_test#TestGetNotFound` failed because it's trying to decode hresp.Body, but
the body's already closed. This patch defers `hresp.Body.Close()` until it
finishes building the error.
Merge pull request #37 from nitrous-io/fix-get-not-found-test

do not close response until buildError finishes
add bucket.GetKey to get metadata of a key
Infer the NextMarker if S3 didn't send it

Otherwise this only works if you specified a delimiter in the request.
The symptom is an infinite loop endlessly processing the exact set of
keys over and over again.
Merge pull request #39 from bobveznat/master

Infer the NextMarker if S3 didn't send it
Merge pull request #38 from nitrous-io/bucket-get-key

add bucket.GetKey to get metadata of a key
Add the support for "RequestSpotInstances" and "DescribeSpotInstanceRequests"
Merge pull request #41 from henrysher/add-spot-instance-support

add the support for spot instances
Add the API "CancelSpotRequests"
Merge pull request #42 from henrysher/add-cancel-spot-api

add the API "CancelSpotRequests" with code cleanup via "go fmt"