Request drains & pausing

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

Looks like this method is similar to one from the controller client. Does it make sense to pull it into a separate package and use it from both clients?