Ensure "ready" event doesn't get fired until socket is listening

This fixes a bit of a race condition during tests (but probably didn't
affect real usage very much). Since during tests, we stop and start many
new servers, and then begin hitting it immediately, some tests could
sometime fail, since the "ready" event was fired before the socket was
actually being listened on. For some reason, this affected the curl
OPTIONS tests more frequently, and more-so on slower server
environments (like shared CIs).

We now only emit the ready event once the server is actually listening
on the socket and ready for incoming connections.

This also improves some error handling to better log proxy errors. And
also ensures the concurrency tests actually meet the desired concurrency
(by raising the maxSockets for http requests).