simplify timeout implementation
simplify timeout implementation

Merely closing the pipe is enough to trigger a wakeup from
IO#wait_readable, there's no need to make a write(2) syscall nor
copy data in/out of the kernel.  We'll use the Ruby 2.3+ 'foo&.method'
calls in a few places to simplify code, as well.

seanmakesgames/mini_racer,discourse/mini_racer,discourse/mini_racer,seanmakesgames/mini_racer,seanmakesgames/mini_racer,seanmakesgames/mini_racer,discourse/mini_racer,discourse/mini_racer,seanmakesgames/mini_racer