add select based waiting

since `Journal#wait` blocks and goes off into C code, it's not interruptable (perhaps there is some FFI magic we can do to avoid this?)

Using `IO.select` means we can interrupt the sleep gracefully if necessary.

__This is not ready to merge:__
This occasionally causes a failed assertion in libsystemd-journal on Journal cleanup when the file descriptor is (for some reason) already closed from ruby land.  libsystemd-journal expects that it owns and will close the file descriptor.   `autoclose: false` should have fixed this, but we'll see.