poll: special case POLLIN on one file descriptor

OpenJDK's SocketInputStream.read() is calling poll() to support
timeout. The call site looks like this:

 pfd.fd = s;
 pfd.events = POLLIN | POLLERR;
 poll(&pfd, 1, timeout);

Our current implementation of poll() is quite complex because it needs
to handle polling on many files. It also allocates memory in several
places:
 - in poll() due to std::vector
 - in poll_install()
 - in net_channel::add_poller
 - in net_channel::del_poller

poll() on one socket can be greatly simplified and we can avoid memory
allocation completely. This change adds special casing for that. It
reduces allocation rate in half in tomcat benchmark with 256 connections.

Signed-off-by: Tomasz Grabiec <tgrabiec@cloudius-systems.com>
Signed-off-by: Avi Kivity <avi@cloudius-systems.com>
test: add test for poll() on a socket

Signed-off-by: Tomasz Grabiec <tgrabiec@cloudius-systems.com>
Signed-off-by: Avi Kivity <avi@cloudius-systems.com>