Selector#register should get the actual io from a Monitor object because Monitor#initialize may convert it

`Selector` needs to use the actual `IO` object because `Monitor#initialize` may convert it.
It means the argument of `Selector#deregister` and `Selector#registered?` methods also should be the actual `IO` object.

Another idea is that `Monitor` has the passed `io` object as well as the actual IO object.
Either way, I think it's good idea to add `deregister(close=false)` method to the `Monitor` class.