Added support for stubbing client responses.

Enable response stubbing by passing `:stub_responses => true`
to a client constructor.

    s3 = Aws::S3::Client.new(stub_responses: true)

    # no api calls made, defaults to fake empty responses
    s3.list_buckets.buckets.map(&:name)
    #=> []

You can configure what data should be returned by calling
`#stub_responses` on the client.

    s3.stub_responses(:list_buckets, buckets:[{name:'aws-sdk'}])
    s3.list_buckets.buckets.map(&:name)
    #=> ['aws-sdk']

You can pass error classes, objects or names and these will
be raised as errors:

    s3.stub_responses(:head_bucket, 'NotFound')
    s3.head_bucket(bucket:'aws-sdk')
    #=> raises Aws::S3::Errors::NotFound

You can stub multiple responses. These are returned in order.
You can mix response data with errors. The final stub is reused
when the number of calls exceeds the number of stubs.

    s3.stub_responses(:list_buckets,
      { buckets:[{name:'aws-sdk'}] },
      { buckets:[{name:'aws-sdk'}, {name:'aws-sdk-2'}] }
    )

    s3.list_buckets.buckets.map(&:name)
    #=> ['aws-sdk']

    s3.list_buckets.buckets.map(&:name)
    #=> ['aws-sdk', 'aws-sdk-2']

Stubbed data is validated against the API model. This ensures you
do not attempt to simulate a response that is not valid.

    s3.stub_responses(:list_buckets, buckets:['name'])
    # raises ArgumentError, expected params[:buckets][0] to be a hash

    s3.stub_responses(:list_buckets, buckets:[{name:'name'}])
    #=> ok, no errors

Fixes #37
Removed a debugging statement.
Spelling fix.
Clarified a test description.
Merge pull request #123 from aws/stub-responses

Added support for stubbing client responses.
Add S3 Waiters to S3 Resource API

Includes the following waiters:
- BucketExists
- BucketNotExists
- ObjectExists
- ObjectNotExists
Merge pull request #126 from aws/s3-resource-waiters

Add S3 Waiters to S3 Resource API
Resolved an issue with SQS messages.
Added configurable retries to the InstanceProfileCredentials provider.

You can now supply a number of times to retry failed attempts
to constructor via `:retries`. Failed attempts to reach the
instance metadata service will retry n times with exponential
backoff, starting at 1,2,4, etc seconds.

    # makes at most 4 attempts to load credentials
    InstanceProfileCredentials.new(retries:3)

Based on implementation in the v1 SDK here:
https://github.com/aws/aws-sdk-ruby/pull/634
Added CHANGELOG entry for response stubbing.
More CHANGELOG entries.
Updated Resource Client Constructor
Now documenting the `resources:validate` rake task.

There was also a minor issue with this task using the
wrong module namespace.

[skip ci]
Resolves a validation error with IAM.resources.json

The User#create_access_key method was attempting to return
an object with data, but the data path did not resolve to the
appropriate shape. It was attempting to return an "AccessKey" shape
instead of the "AccessKeyMetadata" shape required by its type.

To resolve this, a new resource type has been added, "AccessKeyPair".
This resource has the access key id AND the secret access key.

    # provides access to the secret only on newly created objects
    key_pair = IAM::Resource.new.user('name').create_access_key
    key_pair.access_key_id
    key_pair.secret_access_key

    # secrets are not retrievable after creation
    key = IAM::Resource.new.user('name').access_key('id)
    key.access_key_id
    key.secret_access_key #=> raises NoMethodError
Resolved an issue with 5a980266ca8b0f73cf28e4a64901fa3ede7a0891
Resolved an issue with the EC2 volume status waiters.

Fixes #129
Removed use of #method_missing from the base client.
Corrected operation & path for EC2 volume waiters.

See #129
Fixed a few yard doc issues.
All operations now accept a `:response_target` request param.

This optional parameter is now used to set the target of
the HTTP response body. Normal defaults still apply, but this
makes it simpler for streaming download operations, such
as S3::Client#get_object and Glacier::Client#get_job_output
to specify a file to download the response body to:

    # download an object to a file
    s3.get_object(bucket:'aws-sdk', key:'key', response_target:'path/to/file')

    # this still works
    s3.get_object({bucket:'aws-sdk', key:'key'}, {target:'path/to/file'})

Also, the new `:response_target` target parameter is now documented
on all API calls, and is included in the formatting example for
streaming operations (those named above).

Fixes #55