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.
holding a lock to access shard resource is a common practice. In this case `bool` is a uint8 and we do not care about mem reordering. It is probably OK to do.