gio: Add GCancellableChild, a GCancellable with a GCancellable parent

Many times we need to manage multiple async operations inside an object
and each operation may need to be controlled via a different
GCancellable, however this implies keeping track of all of them.

It's instead at times convenient to just create a main object
cancellable to control a chain of GCancellable's that depend on it.

As per this introduce a GCancellable subtype that requires a parent
GCancellable object that is monitored for cancellation.

As per the way GCancellable's "cancelled" signal is defined we need to
disconnect on it outside the actual callback and we use an idle for
that. We avoid keeping references in the involved objects so in case the
idle functions may just do nothing.
9 jobs for cancellable-child in 32 minutes and 11 seconds (queued for 2 minutes and 17 seconds)