Add gs_plugin_list_filter() and some unit tests
Use gs_plugin_list_filter() to remove invalid apps
Use gs_plugin_list_filter() to remove system applications
Use gs_plugin_list_filter() to remove incompatable applications
Move the duplicate filter out of GsPluginLoader so that it can be tested
trivial: Add in some more asserts to debug a refcounting bug
Prevent memory corruption when doing gs_plugin_loader_dedupe() more than once

We were not checking if the GsApp was already in the cache and matching exactly,
which caused memory corruption. Also refactor the method to make things clearer.
Always dedupe after refining results

This ensures we show any update details for applications in the search results.