Implement TestFailoverOrigin5xxUseFirstMirror

Make a request for a new (uncached) URL, make the first server return a 503
response with an identifiable body, second server returns 200 with an
identifiable body, and third server raises an error if it's hit. An error is
raised if any server receives more than one request. We then verify the
status code and body of the response.
Implement Origin5xxFirstMirror5xxUseSecondMirror

This is pretty similar to TestFailoverOrigin5xxUseFirstMirror.
Implement TestFailoverOriginDownServeStale.
Modify 5xxServerStale time related variables

Renamed to indicate what they are doing - response TTL, response TTL with
buffer, and wait for saintmode. I've relocated the comment about saintmode
to the place where we're setting the var.

I've also changed the sleep on the second request (respTTLWithBuffer) to be
five times the value of the cache duration (respTTL). So that it will scale
accordingly if we change the TTL and it's more obvious why we're waiting.
Include requestCount in error message

So that it's clear which request failed. In doing so I've also made
requestCount one-indexed rather than zero-indexed, so that we don't need to
add one when logging and it makes the case statement easier to read. We
should consider changing other tests that use this pattern.
Make two additional requests when testing stale

To verify that we really are getting the stale object.

This is in part because the behaviour from the real CDN is currently wrong -
it seems that saintmode isn't being respected for the second request and
that it goes to origin twice and then gets a response from backup1.

I've moved the initialisation of expectedBody outside of the loop because we
now need to preserve the value between case statements.
Comment request flow for 5xxServeStale

Although this loop is quite neat, it isn't trivial to read. So add some
comments describing the flow.
Merge pull request #47 from alphagov/failover_mirror_5xx

Implement two 5xx failover to mirror tests