fails:IO#close does not raise anything when self was already closed
fails:IO#close does nothing if already closed
slow:IO#close on an IO.popen stream clears #pid
slow:IO#close on an IO.popen stream sets $?
slow:IO#close on an IO.popen stream waits for the child to exit
