Refactor Overlay, HTTP::Server for universal port

These refactorings are required to support the universal port.
Reviewers: @miguelportilla, @scottschurr

Ignore the top 3 (eefc5d9..0ebc9ee) they are from another pull request.
I was thinking about this diagram last night and realized that I must be very confused. I would expect buffered input to grow like this:
`|--input 1--|--input 2--|--input 3--|...`
Then I'd expect output to chase input:
`|----output 1----|--out 2--|...`
Output must stop when all input is consumed.  My expectation doesn't match your diagram at all.  That doesn't mean I'm right, just confused.