Fix logic on when to shutdown Netty child workers.

Do not shutdown Netty child worker group thread pool for listening
server socket unless the server socket is also closed. Note that it is
perfectly possible for an accepted child socket to have a lifetime
past that of the listening socket (especially perhaps in tests), but
the socket code was not also checking if the server socket itself was
still open. This meant that subsequent incoming child connections
would failed with a RejectedExecutionException error.

Other socket fixes include no longer uses the root handler for socket
debug logging, and allows for any object that is an Iterable for
select lists.