Handle CancelledKeyException in IO.select

When a CancelledKeyException is raised in IO.select/SelectBlob#processSelectedKeys it caught, but the catch block causes another one to be raised immediately. This patch removes the catch block completely (because it's never run, so nothing can rely on what it does) and raises an Errno::EBADF from SelectBlob#goForIt.

CancelledKeyException is raised when the underlying channel has closed, which is normally handled. There is however a race condition in the channel selection that means that you can get a cancelled key from select if the channel is closed just after the selector determines that it is ready to read or write.

It's unclear what the correct way of handling this really is, but raising EBADF feels reasonable, the channel has been closed and so it's no longer a valid file descriptor.

This closes #1580
Raise Errno::EBADF for some IOExceptions

AbstractSelectableChannel#configureBlocking can raise IOExceptions with the message "Bad file descriptor", this happens for example in SelectBlob#registerSelect under some circumstances. This patch translates these IOExceptions to Errno::EBADF instead of IOError as they are now.