Add HTTPStatusCode to ResponseMetadata dict

Every response dict that has a ResponseMetadata will now
have an HTTPStatusCode attribute.  This was added specifically
for the v2 waiters (which can match on the HTTP status code), but
it also seems reasonable adding as a general response attribute,
given it is metadata about a response.
Implement waiters v2 spec

This commit implements the new waiters v2 spec, which is a
simplified format from the previous version.  The implementation
is much easier to follow, and also does not require any model
translations, we can consume the model directly without any
changes.

The Service and Client objects have been updated to use this new
interface.

There will be a separate commit to convert the waiters to the new
v2 format.
Update waiters to v2 format
Add service_name override to service_model

To handle cases where endpoint_prefix != service_name, as happens
with emr, ses, etc.
Always use service_name for client models

The endpoint prefix shouldn't be used, sometimes botocore
changes this to a different value (ses vs. email for example).

Also added an integration test to ensure we don't regress on this
as well as the usual unit tests.
Add pathAll and pathAny
Rename all_waiters() to waiter_names property

As per review feedback.
Merge branch 'waiters-v2' into develop

* waiters-v2:
  Rename all_waiters() to waiter_names property
  Add pathAll and pathAny
  Always use service_name for client models
  Add service_name override to service_model
  Update waiters to v2 format
  Implement waiters v2 spec
  Add HTTPStatusCode to ResponseMetadata dict