Vaguely working test for Age header behaviour

This test has two main issues:

* When the IP address for the Edge changes (when the A record times out),
  the Age header is reset -- the value is not preserved acrosss Fastly locations.

* The Age header is being reset to 0 by Fastly, so our assumptions about the behaviour
  (that this should be additive) are incorrect.
Add caching for edgeHost DNS lookup

We have found that tests intermittently fail when flipping from
one edge IP address to another, when the DNS A record times out.

This happens quite frequently, particularly with tests that involve
pauses (as per the previous commit for Age header behaviour)

This commit adds a global cache variable which we populate with the first IP
address found for edgeName. A custom Dial function is then plugged into
the http.Transport to make all TCP connections use this hard cached
IP address rather than looking up the hostname each time.
Adjust Age Header test based on observation

We initially thought that the Edge would use the origin Age header to
effectively start the counter for its rewritten Age header - that an
Origin Age of 1000 would result in an Edge Age of 1002, after caching
for two seconds.

These tests have highlighted that this is not the case. Edge starts
the Age counter from 0 when it first caches.
Fix accidentally commented out Age header set
Use net.JoinHostPort rather than fmt.Sprintf

Thanks @dcarley for highlighting this!
Add godoc for DNS caching functions
Add missed requestReceivedCount++

This prevented the 'origin queried twice' error being called
when DNS record expiry caused the origin to be called again by
a different edge location.

I've tested that case now, by temporarily disabling the new Dial
function - the error logic now works as expected.
Merge branch 'master' into age_header
Make Age test less prone to backend cache sync

... and make our tests more informative when it still fails
Fix Age header test to reflect Varnish behaviour

We have made an interesting discovery during the writing of this
test.

Varnish appears to have slightly different behaviour with respect to
the Age header - at least between the Fastly version and our 3.0.5
mock test deployment.

In Varnish 3.0.5, the Age header would be increased based on the
value provided by origin -- that is to say an origin Age of 100 would
appear to be Age 100 when it went into the cache, and 105 5s later.

In Fastly Varnish, we were seeing this Age header get reset to 0, but
only in this test. In production, the former behaviour was noted.

@dcarley discovered that if the Cache-Control header was also set with
a max-age value set, the production behaviour was replicated.

This part of the Varnish source appears to relate to this functionality:

https://github.com/varnish/Varnish-Cache/blob/varnish-3.0.5/bin/varnishd/rfc2616.c#L42
Highlight need to prevent CDN location switch
Merge pull request #27 from alphagov/age_header

Test for 'Age header set by Edge'. Also includes code to cache IP address.