proxy mode, pt 2

The ReverseProxy code from the standard library doesn't actually
give us the control that we want. Pull it down and rip out what
we don't need, adding tests in the process.
I think my concern is more what happens if you receive a malformed request for example; it'll just spin indefinitely rather than propagating an error or even noting what the error is