WIP waiters implementation, lacks tests.
Patched buggy S3 waiter definitions.

A suitable fix needs to be merged to the upstream definition file.
Currently, the definition assumes a particular error code when S3
does not return one. S3 does not return an error code as these
are HEAD requests with XML bodies in the response.

Ideally the waiter configuration would support failure/success acceptors
that match on the status code (404 in this case).

Until then, this changes the error codes to those generated by this SDK.
Added waiter tests.

Also moved waiter errors into their own module.
Increased test coverage for waiters.
Added a short example of waiters to the README.
Removed an un-used internal method.
Corrected a spelling error a waiter error class name.
Filled out more of the waiter usage documentation.
Added API documentation for client waiters.
Added a CHANGELOG entry for waiters.
Updated the jamespath dependency to a version with a needed bugfix for waiters.
Basic implementation of exposing waiters from resources.
Added a functional resource waiter test.
Added resource-level documentation for waiters and their usage.
Merge pull request #108 from aws/waiters

Add support for waiters.

```ruby
# client waiter
ec2_client.wait_until(:instance_stopped, instance_ids:['i-12345678'])

# resource waiters
i = ec2.instance('i-12345678')
i.stop
i.wait_until_stopped
```

Available waiters are documented in the service clients and resource classes.