Request drains & pausing

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

Do this after getting the service set so that we can write a 500 if that fails (Flush will write 200 + the headers if they haven't been written yet).