[#19] Add some more unimplemented Cache tests

Standard behaviours.

Similar to 4000da0, `Cache-Control: no-cache` is honoured by the Varnish
defaults and hasn't been implemented by Fastly. Documenting the fact with
the category of this tests. We may need to review this against CloudFlare.
Create testThreeRequestsAreCached helper

Which looks very much like testThreeRequestsNotCached except that all of the
responses should be the same. Use this for TestCacheFirstResponse. It will
alsop be used by some tests that I'm about to write.
Implement TestCacheCacheControlNoCache

Using the new testThreeRequestsAreCached helper.
testThreeRequestsAreCached expose complete resp

Expose the complete responseWriter in the callback from the helper because
TestCache404Response is going to need to call WriteHeader() in order to
create a 404 response.

The callback still occurs deliberately before writing the response body
because Write() will call WriteHeader(http.StatusOK) if WriteHeader() has
not already been called.
Implement TestCache404Response

Using response callback from the previous commit.
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.
Merge pull request #41 from alphagov/implement_standard_cache_tests

Implement standard cache tests