Add waiters for ec2 instance status checks

* instance-status
* system-status

... because Windows instances take way longer to come up than non-Windows.
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
Feedback
Removed a debugging statement.
Spelling fix.
Clarified a test description.
Merge branch 'master' into ec2_status_watchers
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
[CloudFormation] Add waiter for stack completion
[CloudFormation] Add resources for stacks
[CloudFormation] Better populate resource attributes

Avoid n+1 redundant queries to populate stack resource attributes.

Per @trevorrowe’s comment: http://git.io/J2EFyw
[CloudFormation] Add Events resource
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]