freeze time to fix occasional failures in s3 tests
freeze time to fix occasional failures in s3 tests

The s3 request signature generation code relies on a time-to-live
parameter to calculate the signature.  It adds the ttl to the
result of time.time() to calculate the expiry time, then includes that
value as part of the signature payload.  If the time ticks over by a
second between when the mock url and request urls are generated, the
signatures will be different.  The signature is sent in a query param,
so the request mocker will fail to match the requests.

To fix, freeze time for all of s3.  The signature is required for all
requests, so freeze all request-making test classes.  I originally
tried wrapping the entire module in a freeze, but that failed.
Presumably, because the tests are being run asynchronously.  So
instead I decorated each test class individually.

Johnetordoff/waterbutler,rdhyee/waterbutler,RCOSDP/waterbutler,felliott/waterbutler,TomBaxter/waterbutler,kwierman/waterbutler,CenterForOpenScience/waterbutler