search: use g_get_system_data_dirs() to discover providers

Currently, the search panel looks for search providers in
DATADIR/gnome-shell/search-providers. This won't work when providers are
located in a different directory which is still part of XDG_DATA_DIRS,
which is a valid use case and supported by gnome-shell.

This commit refactors the loader code to scan all the directories
upfront in a separate thread.

https://bugzilla.gnome.org/show_bug.cgi?id=739148