Allow loader *instance* to be passed in

A loader instance (instead of a loader class) should be passed
to the session.  By requiring a loader class, this ties the __init__
to the interface of the loader, which should not be the case.  This
also makes it harder to share loader instances (which is where any
kind of caching would live) across sessions.

As a result of this I updated the unit tests to remove all the
patch_session code, and use the *public* API to set the loaders.

Additionally, many of these tests were written before BaseSessionTest
was around, so in many cases, the tests could just be updated to use
BaseSessionTest and use the pre-created session instance created
in the base class's setUp.
Merge branch 'release-0.38.0' into develop

* release-0.38.0:
  Bumping version to 0.38.0
  Fix ec2 namespace issue
Merge branch 'pass-loader' into develop

* pass-loader:
  Allow loader *instance* to be passed in
Use unquote_plus instead of unquote

Fixes aws/aws-cli#718

I'll also add an integ/unit test to the CLI repo to prevent
regressions in the future.
Update elb.json model

This includes the ConnectionDraining param.
Merge branch 'elb-conn-drain' into develop

* elb-conn-drain:
  Update elb.json model
Merge branch 'unquote_plus' into develop

* unquote_plus:
  Use unquote_plus instead of unquote
Fix fips-us-gov-west-1 s3 logic

The s3.json model had "fips-gov-west-1" when the
region needed to be "fips-us-gov-west-1".  Interestingly
enough, botocore did *not* given an error when this happened.
This should be fixed...
Add test for endpoint global logic

This didn't make sense to me at first, but for a number of reasons
(noted in the comments) we can't change this behavior just yet.
Otherwise this would be a breaking change to the CLI.  I think there's
probably a better way to do this, but for now leaving things as is.  I
did add a test that documents this behavior though, so hopefully
others don't hit this code and wonder what's going on.
Merge branch 'fix-s3-fips-endpoint' into develop

* fix-s3-fips-endpoint:
  Add test for endpoint global logic
  Fix fips-us-gov-west-1 s3 logic
Coerce max items to an integer

Fixes a bug where services that model max items as a string
will fail.  Now we always convert this value to an int().
Merge branch 'str-max-items' into develop

* str-max-items:
  Coerce max items to an integer
Update opsworks model to latest version
Bumping version to 0.39.0
Merge branch 'release-0.39.0'

* release-0.39.0:
  Bumping version to 0.39.0
  Update opsworks model to latest version
  Coerce max items to an integer
  Add test for endpoint global logic
  Fix fips-us-gov-west-1 s3 logic
  Update elb.json model
  Use unquote_plus instead of unquote
  Allow loader *instance* to be passed in