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.