Added the epoll backend for GMainContext

The new backend necessitates other changes:
Now that adding and removing descriptors to the poll may
produce failures, some of which are benign, it's important to
handle the failures when blocking and unblocking sources for recursion,
so that we don't end up in a more serious error when e.g. unblocking
a source that has had its descriptor closed and then
"temporarily" removed from the poll for dispatch.
Erased the run/quit functions from GMainContextFuncs

These are a dead API: any existing or planned backend supports
single-step iteration. They introduce functionality regressions.
They needed to go, but I prefer to leave them in the history
for reference.
Make use of the epoll backend, with a runtime fallback to poll

Falling back to poll is done in two cases:
1. At construction, if epoll_create fails.
2. When the client calls g_main_context_set_poll_func().
Internalized g_main_context_reset_compat_polls()

It can always be called from g_main_context_prepare().
We also call it from g_main_context_query(), because we
should try not to break it for the existing applications that
iterate the context by themselves via the low-level functions.
Block the source lazily, when the iteration actually recurses
Don't remove fds piecemeal when the GMainContext is being destroyed

It's useless work and unnecessary system calls for epoll.
Exempt the internally managed GPollFDs from the reset loop

We don't need to fear anybody changing their event masks,
and revents are correctly zeroed by dispatch processing.
Don't reset revents in the compatibility fd support loop

Doing so brings more harm than good, because we can clobber events
that were reported, but not dispatched due the source's low
priority. The revents fields for dispatched sources are correctly
reset after dispatch. If the application polls our fds itself,
it will pass back the fds with zero reported events to
g_main_context_check() as per good old poll semantics.

Care should be taken with recursive sources, however: these should
only see revents on their fds zeroed after the outermost dispatch
has returned. Yay, a use for G_HOOK_FLAG_IN_CALL again.