This is a very ugly try to work around the following issue when using
Channel.newInputStream(): If the client closes the connection and we are
already reading from the blocking InputStream, that stream will simply throw
an IOException to notify us of the connection close.
The ConnectionAcceptor class is a server thread handling accepting of incoming client connections and simply hands
over these connections to another thread for further processing.
Some useful methods for closing io streams, io readers, channels and Selector
quitely, as well as methods for non-blocking, semi-blocking and full blocking
io read/write operations.