Factored the poll backend out of GMainContext

Defined GMainContextFuncs, the backend vtable for
pluggable main loop implementations.
The new constructor g_main_context_new_custom() can be used
to create contexts with custom backends (and is used internally
for built-in backends).

This first backend, made largely from the existing code, is special
in another way: the methods of GMainContext that were designed around
GPollFunc will be only supported by the poll backend.
The context will switch to the poll backend to complete
any of these functions.
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(),
and we should not break it for the existing applications that
iterate the context by themselves.