online-accounts: Don't segfault if get_all_providers_cb is called during init

Due to an API bug in GNOME Online Accounts, the asynchronous
goa_provider_get_all method doesn't accept a GCancellable argument. This makes
it difficult to cancel an ongoing call when the CcGoaPanel gets destroyed.

This was hacked around by taking a reference on the panel for the duration of
the call. Instead of cancelling a pending call on destruction, it would keep the
panel alive until the call was over.

The hack does not consider the case get_all_providers_cb is called while the
panel is still being initialized. E.g. this happen when create the panel passing
the paramenters "add <provider>" because the constuct properties are set just
after cc_goa_panel_init returns and because goa_provider_add_account will result
in a call to g_main_context_iterate (caused by gtk_dialog_run).

In order to work around this we can call goa_provider_get_all in _constructed()
after all construct properties have been set.

GNOME/gnome-control-center#401
11 jobs for fix-issue-401 in 6 minutes and 6 seconds (queued for 2 seconds)
latest
Status Job ID Name Coverage
  Build
passed #237923
build

00:03:25

 
  Test
passed #237925
asan

00:02:40

passed #237924
test

00:01:36

 
  Manual
manual #237930
allowed to fail manual
armv8
manual #237926
allowed to fail manual
flatpak
manual #237929
allowed to fail manual
msan
manual #237931
allowed to fail manual
ppc64le
manual #237927
allowed to fail manual
tsan
manual #237928
allowed to fail manual
ubsan
 
  Review
manual #237932
allowed to fail manual
review
manual #237933
allowed to fail manual
stop_review