Avoid unhandled Poller exceptions

The changes allow the Poller to avoid provoking unhandled NullReference
or ObjectDisposed exceptions when its attached sockets are closed
improperly. In runtime, these result in irrecoverable crashes. An
alternative to the fixes is to perform sanity checks in the
Socket.Close() method and throw exceptions accordingly.