Implement Waiters

This allow you to wait until a resource is in a particular state, described declaratively.

Used like:

```
s = botocore.session.get_session()
ddb = s.get_service('dynamodb')
endpoint = ddb.get_endpoint('us-west-2')
op = ddb.get_operation('CreateTable')
table_name = 'table-name'
response = op.call(...args...)
print("Waiting for create")
ddb.get_waiter('TableExists').wait(endpoint, table_name=table_name)
print("Table Created")
```

translate.py was updated to translate the configs into a denormalized forms that also grouped the states into sub dictionaries ('success', 'failure').  Compare [original](https://github.com/jamesls/botocore/compare/boto:develop...jamesls:waiters?expand=1#diff-871ce66b209dca1acff0353bbfe1f4a2R1767) to [transformed](https://github.com/jamesls/botocore/compare/boto:develop...jamesls:waiters?expand=1#diff-56abbea8bfe2f9c540fa46061de94639R21488)

Working on adding more services.  But will likely be a separate PR.