ev: event loop for asynchronous I/O

Start with [[newloop]] to create an event loop, then register files with it
using [[register]], or convenience functions like [[listen_tcp]].

To submit I/O requests to the event loop, first prepare a suitable request
object (e.g. via [[ioreq_init]]) and then submit it with the appropriate I/O
handler (e.g. [[readv]]). The user is responsible for allocating request objects
(see [[req]]) and ensuring that their lifetime remains stable for the duration
of the I/O operation.

Use [[ev::run]] or [[ev::dispatch]] to process I/O events.

Note that many programs (e.g. daemons) which use event-driven I/O would be wise
to consider masking SIGPIPE, to avoid being killed when writing to a closed pipe
or socket.

	use unix::signal;

	// ...

	signal::ignore(signal::sig::PIPE);
