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.