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 wrote a multithreaded commercial audio application which had various hangs during shutdown at various times.

At a certain point, I got rid of all the automatic stuff, and had a single file with two functions, one of which started things up in order and one of which shut them down in (more or less) reverse order.  It took me 15 minutes, and I never had a trouble again.

While C++ destructors are called deterministically (though for global destructors, that determination is different between different compilers), actually being sure everything's being called in the right order during shutdown can be pretty hard, particularly when you're using shared_ptr everywhere...