Once URLs are registered, forward the request to the content-store

We want to test the intended behaviour of the publishing-api. To do
that, a fake content-store server is implemented. This server always
responds with a 200 OK status code and a sample content-store body.

When a PUT request is sent to the publishing-api muxer, we're making
sure we call through to the url-arbiter **and then** the content-store
in the correct order.

We don't want to duplicate logic already implemented in the
content-store application. To do so we're proxying the original
request we receive and sending it to the content-store using a
`httputil.NewSingleHostReverseProxy(*url.URL)`. This proxy can be
handed the parameters from our `http.HandlerFunc(w, r)` implementation
(`ContentStoreHandler`) in the form of `ServeHTTP(w, r)`.

However, it's not possible to read from an `http.Request` body twice
in Go. This is because `r.Body` implements the `io.ReadCloser`
interface. An `io.ReadCloser` is an interface that implements two
interfaces, one of which is the `io.Reader` interface.

When an object implementing `io.Reader` is read it will return 0, EOF
for all subsequent reads (taken from docs for `io.Reader`):

> The next Read should return 0, EOF regardless.

This means that we can't forward our `http.Request` onto our
`httputil.NewSingleHostReverseProxy` cleanly. Doing so would cause us
to send an HTTP request with a ContentLength of the original body but
no body able to be read. An example of the error we're see is here:

> http: proxy error: http: Request.ContentLength=81 with Body length 0

To get around this we copy the raw bytes from the request
body (`r.Body`) using `ioutil.ReadAll` into a buffer we own. Then we
overlay two separate `bytes.NewBuffer` instances, which will allow us
to drain the instances separately as `http.Request` and `io.Reader`
expect.

Finally, we implement the `io.ReadCloser` interface on top of our
`bytes.NewBuffer` copy and replace the original `r.Body` with itself
so that it can be read by the `httputil.NewSingleHostReverseProxy` and
then closed successfully as the underlying Go code expects.