Implement TestCacheCacheControlMaxAge w/helper

Modify the testThreeRequestsAreCached helper so that it can optionally test
that a cached response expires after a given period of time.

The time sensitive nature of this test means that it is likely to fail if
the request/response latency is too high. It seems that we could do
something clever with time.Timer to test/mitigate that, but I don't think
it's worth the complexity.

It has now been renamed testRequestsCachedIndefinite and there is a
convenience function called testRequestsCachedIndefinite, used by existing
tests, which always passes a duration of zero.
Implement TestCacheExpires

headerValue is constructed within the responseCallback because we want to
call Time.Now() to construct the expiry date as late as possible. Otherwise,
if the first request is delayed (slow DNS or connect), we may already be a
few seconds into the cache duration.
Delete TestCacheDefaultTTL

This is going to be difficult to test for two reasons:

1. The value is going to be tightly coupled to the service configuration and
would likely need exposing as a CLI flag so that it can be modified.
2. It's going to be at least 60s and maybe as high as 30m, which is going to
make the tests run very slowly.

So I'm removing it and modifying the comment for TestCacheFirstResponse to
describe that it essentially covers the same case (but without the specific
cache period).
Add and implement TestCacheExpiresAndMaxAge

RFC2616 states that `Cache-Control: max-age=n` will take precendence over
`Expires: n` if both are present:

http://www.w3.org/Protocols/rfc2616/rfc2616-sec14.html#sec14.9.3

So test this by providing an `Expires` duration that is twice as long as
`Cache-Control`. We don't test the scenario described in the RFC, whereby
Expires is more restrictive, because we'd need to heavily modify our helper
to do that.