CXX-11 avoid using Listener class in order to avoid race
CXX-11 add windows headers, use ifdef for platforms
CXX-11 some improvements based on feedback
CXX-11 refactor to use timeout instead of shutdown pipe
CXX-11 only include unix socket headers if we are not on windows
CXX-11 shutdown is unnecessary
CXX-11 setting socket as non-blocking is unnecessary
CXX-11 windows wants optval for setsockopt to be char*
CXX-11 initialize Winsock
CXX-11 platform dependent shutdown and closing of sockets
CXX-11 call abort rather than exit