epoll: a real epoll

Add an _activity container that holds all epoll keys which have seen some
activity, and sample them when epoll_wait() is woken up.

Net channels present some complication, in that they cannot add to _activity
from an RCU read-side critical section.  Instead, they use a lock-free
_activity_ring to pass the event.  If the ring overflows, we fall back to
sampling the entire fd set.

Reviewed-by: Tomasz Grabiec <tgrabiec@gmail.com>
Signed-off-by: Avi Kivity <avi@cloudius-systems.com>
Signed-off-by: Pekka Enberg <penberg@cloudius-systems.com>