Add support for OpenBSD and use ppoll() on OpenBSD.

Fix interrupt handling to recognize that on FreeBSD and OpenBSD, an
interrupt might have fired even if pselect()/ppoll() don't return
-1/EINTR.