Tweak memory management a bit
Use g_object_ref_sink() for widgets since that is the right pattern for GInitiallyUnowned objects, remove the corresponding g_object_unref/g_clear_object in the free func, and make more use of g_clear_object/g_clear_pointer.
For the screenshot portal this is a correctness fix since in that case the g_clear_pointer() in screenshot_dialog_handle_close() was preventing us from dropping the reference held on the dialog that we would otherwise drop in screenshot_dialog_handle_free(). Otherwise these changes should not introduce any functional difference.