search-provider: Don't assume handles are still valid

We were crashing when we got back search provider handles from
the shell for objects that no longer existed.

We can't just call gcr_collection_contains() as it assumes that
it's receiving a valid GObject.

So hold a table of all the handles we've returned and update
it via weak references.

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