[#60058920] Performance test framework

An initial hack to compare the router's performance with it's raw backends.
Depends on [vegeta](https://github.com/tsenart/vegeta) and needs to be
refactored into a helper.
[#60058920] Compile hash of all Vegeta results

So that we can compile mean, max and 99th percentile, in addition to 95th
percentile.
[#60058920] Actual tests for perf regressions

To test the three areas that we've currently identified:

- Two healthy backends.
- Ditto, and one slow backend.
- Ditto, and one missing backend.

Implementation of Vegeta has been moved to a helper. Currently uses the
default rate of 50rps and duration of 10s. Tests take a total of 60s.
[#60058920] Refactor to expose all vegeta stats

Return the entire results hash rather than just pulling the `latencies`
tree. This will allow us to compare other values.

Stuffing the results into a new `res` hash because Long Variable Names.
[#60058920] Check quantity/codes of Vegeta results

Expect that we get the same quantity of requests against the Router and
backend during our timeboxed test, and that all of the responses have 200
status codes.
Merge pull request #48 from alphagov/60058920-performance_regression_tests

[Fixes #60058920] Tests for performance regressions
Run direct and router vegeta runs in parallel.

This achieves 2 things:

* roughly halves how long these tests take to run.
* somewhat eliminates false positives due to differing machine load
  during the 2 runs
[README] Summary of handler behaviours

Brief summary of the features provided by the two handlers that were
recently added.

Remove the S from HTTP since we don't currently support HTTPS.
Merge pull request #51 from alphagov/readme_summarise_handlers

[README] Summary of handler behaviours
Merge pull request #52 from alphagov/parallel_vegeta

Run direct and router vegeta runs in parallel.
Use a non relative latency threshold for perf tests

The problem is that our test backends are ridiculously fast, and
therefore, 200% approximately zero is still approximately zero.

This changes the test to assert that the router doesn't add more than
20ms latency to the requests.
Output latency numbers from tests.

So that we can see what's going on on CI
Merge pull request #53 from alphagov/non_relative_latency_threshold

Use a non relative latency threshold for perf tests
Allow double the threshold for outlier requests

We're always likeley to get some outliers that fall outside the expected
bounds due to environment issues etc.
Merge pull request #54 from alphagov/non_relative_latency_threshold

Allow double the threshold for outlier requests