Request drains & pausing

Closes #65. Closes #56.

This brings the TCP backend closer to HTTP, as well as implements backend pausing and request drains. 

I think so, we should probably just extract the entire set, but I haven't done so yet as I think the two clients had a few subtle differences.