eventp 1.0.0

Safe Rust abstraction over Linux epoll, offering a truly zero-cost event dispatch mechanism.
Documentation
Registers a new subscriber with the event loop.

Takes ownership of `subscriber` and registers its file descriptor
with the underlying `epoll` instance. The subscriber's thin pointer
is stashed in the `epoll_event.data` field for zero-cost dispatch.

# Re-entrancy

Calling this from inside a handler is supported, but the new
subscriber will not fire until the next
[`run_once_with_timeout`](crate::Eventp::run_once_with_timeout) iteration.

# Errors

- [`io::ErrorKind::AlreadyExists`]std::io::ErrorKind::AlreadyExists
  if a subscriber for the same [`RawFd`]std::os::fd::RawFd is already
  registered.
- Otherwise, the [`io::Error`]std::io::Error returned by
  `epoll_ctl(EPOLL_CTL_ADD)`.

# Panics

Cannot be triggered through the public API. Internally, this method
could panic if `subscriber` has already been dropped in place.