An interruptor provides a file descriptor that can be used to cause a file-descr-watcher to detect the file descriptor is ready for reading. We use an interruptor when a thread needs the Async scheduler to service a request.
thread_safe_interrupt t causes read_fd t to become ready for reading.
clear t causes read_fd t to become not ready for reading. It is guaranteed that
any calls to thread_safe_interrupt after clear t returns (and prior to another
call to clear t) will cause read_fd to become ready for reading.