Use non-blocking IO in server

This client remains unchanged so that it can both benefit from
the simplicity of using select (instead of epoll) which is more
portable, as well as maintaining the current close synchronous
network IO behavior for clients and workers (where it may be
more desirable to block on network IO than assume that a reported
result was delivered without error).

This changes the ServerConnection class (a form of Connection
specifically for use by the server) to use non-blocking IO.  The
base Connection class is generally unmodified, except that its
read method is updated to support either blocking or non-blocking
IO, because it is simple to support both there and would be
quite duplicative otherwise.  This is invisible to clients and
workers.

The non-blocking write portion is implemented in the
ServerConnection subclass.

The server itself has a custom poll loop that is designed around
edge triggering.  All IO happens within this loop so that the
results from edge triggering can be relied upon.

Because epoll handles changes to the polling set from external
threads, the wake pipe is no longer needed in order to start
polling a new connection.  It is still used for shutdown.

Change-Id: I8b8658b984d8f399c5efb907e6becd4bea58c50e
Merge "Use non-blocking IO in server"