Fix struct epoll_event packing, add tests

This patch changes all of the constants and types to have
namedtuple-based metadata sufficient to run comparative tests to verify
that what glibc.py sees is the same as what tiny test .c programs would
observe.

During demo app development I found that my epoll_wait would misbehave
and return wrong data when more than one event was passed. This was
traced (thank $DIETY for strace) to seemingly bad data being passed to
epoll_ctl due to size mismatch of struct epoll_event. It turned out that
struct epoll_event was the fist structure encountered so far that needed
"packing" (not adding natural alignment gaps) to work.

I didn't bother with making this patch more cosmetic or well separated.

Signed-off-by: Zygmunt Krynicki <zygmunt.krynicki@canonical.com>
Make demo3.py more like demo3.c

This patch makes both C and Python version of demo3 roughly the same.
Pipes are registered with epoll as soon as we create them (before
forking). Some variables were removed to match the C-side code better.

Signed-off-by: Zygmunt Krynicki <zygmunt.krynicki@canonical.com>
Add demo3.py based on python's epoll

Signed-off-by: Zygmunt Krynicki <zygmunt.krynicki@canonical.com>
Add diff-glibc-vs-python target

Signed-off-by: Zygmunt Krynicki <zygmunt.krynicki@canonical.com>