Add support for waiters

Added a client-level implementation of waiters that consume the definitions in the apis directory. Waiters poll an API until a certain condition is matched. Waiters are invoked by name and can be configured.

```ruby
ec2_client.wait_until(:instance_stopped, instance_ids:['i-12345678'])
```

See the API documentation for each service client for `#wait_until` and `#waiter_names` for more information.