First stage of implementing persistent kqueue events:

* add a persist event which uses EV_CLEAR so it isn't level triggered
* start leveraging this for the comm read layer, which will keep the
  event registered until an error or EOF occurs.

The persistent + EV_CLEAR method will trigger a read event
every time more data appears in the buffer, but it won't
trigger if you get the read event and ignore it.  If you do that
at buffer-full, it will never send you another event.

This has been lightly tested but it hasn't yet been instrumented
to ensure it's _correct_.