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'm having second thoughts. As written, if a `Server` gets destroyed while one or more `Door` objects exist, the destructor will hang. This is not what we want. The destructor needs to first close the doors. This makes it bullet proof.