Asynchronous version of getaddrinfo().
- Uses getaddrinfo() underneath, so is quirk-compatible
- Configurable number of resolver threads
- Signals completion via a single file descriptor
- Compatible with select, poll, epoll, or blocking results
- Simple API; splits getaddrinfo() into two functions, with a file descriptor in between
- valgrind-friendly: closes all fds, frees all allocated memory
See example.c