Fix bug in nc_kqueue.

Because of the way kqueue works, the returned event list can contain multiple entries for one connection/fd (e.g. one kevent for EVFILT_READ and one kevent for EVFILT_WRITE). This can result in a segfault where you first process the EVFILT_READ, decide that the client is sending bad data and close the connection (and freeing resources). Subsequently when you return to process the next kevent (the EVFILT_WRITE), you attempt to use the (freed) conn object pointed to by udata which fails.

The way we fix this is to walk the list of kevents waiting to be processed and zeroing out events that belong to connections we're about to close.