Use a type of mutex where we can check whether we can take it right now or
have to wait. Thanks to tfm on the #go-nuts IRC channel for his
assistance with this.
Add a missing space in the backend error message.
Remove useless log message when we manage to connect to a backend.
Ignore ErrPersistEOF which just means we need to reneg the connection
afterwards.
Use defer to close the response body rather than to do it by hand.
Try to reestablish the backend connection if the backend explicitly
states it has terminated it.
Use Copy to stream data from backend to client, and don't do retries
if we cannot copy the full body (it won't work).