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
Merge branch 'master' into cloudformation_resources
[CloudFormation] Rename Event#event_id => Event#id