Factored out the poll-centric API support functions

The methods of GMainContext that assume it is backed by a GPollFunc
will be supported only by the poll backend. The context will switch
to the poll backend to complete any of these functions.
Provide a user data pointer to custom main contexts

It could be used to pass a uv_loop_t* for the libuv backend,
for example.
Added acquire and release functions for main loop backends
Added g_main_context_check_sources()

It takes the part of g_main_context_check() that is useful
to main loop backends, sans the fd array.
Factored iterate and poll out into the backend
Back to lock-free operation in the poll backend

Most data access happen in methods that are called with
the lock held at GMainContext. So I just moved the
debug dumping stuff from poll into the lock-safe
query.
The only thing unguarded is the poll function pointer,
but if someone changes the poll function on a running
GMainContext they don't completely own, they are deep
in the crazy territory.