desktop index: Deal with multiple languages

In the event that the LANGUAGE environment variable is used, search for
matching applications using the closest-matching text index for *each*
language.
Add new callback types for sorting strings

Add GStringCompareFunc and GStringCompareDataFunc for bindable
alternatives to GCompareFunc and GCompareDataFunc.
desktop files: add sort function for searching

Also, clean up the implementation of searching to make more-conventional
use of GSList since it ends up being easier in the end.