fails:IO.select blocks for duration of timeout if there are no objects ready for I/O
fails:IO.select returns immediately all objects that are ready for I/O when timeout is 0
fails:IO.select returns nil after timeout if there are no objects ready for I/O
fails:IO.select returns supplied objects when they are ready for I/O
fails:IO.select returns supplied objects correctly even when monitoring the same object in different arrays
fails:IO.select invokes to_io on supplied objects that are not IO
fails:IO.select raises TypeError if supplied objects are not IO
fails:IO.select raises TypeError if the specified timeout value is not Numeric
fails:IO.select raises TypeError if the first three arguments are not Arrays
fails:IO.select does not raise errors if the first three arguments are nil
fails:IO.select does not accept negative timeouts
