Moved the client connect logic into HttpBackend from HttpServer

The low-level servers accepting connections (TCP/SSL servers) were
moved into their own classes, which are HttpBackends. This allows
for new possible back-ends in the near future. It also de-clutters
HttpServer.