Add an I/O callback that by default is a no-op

This is to signal read/write changes to poll/select and friends