bugfix: XWindow interrupt pipe could block writing, leading to dead-lock

Interrupt pipe is non-blocking, now. Also, setDirty() has an additional
argument to indicate that interrupt is needed/not needed to decrease
interrupt overhead.