[Ide] Add property to specify a custom comparer on completion datalist.

There was already a IsSorted property on the object which lets you sort the list manually and prevent the completion system from re-sorting it later.

The issue is that this completion data is then exposed through the IListDataProvider abstraction that also does its own internal sorting by calling IListDataProvider.CompareTo which doesn't honor the existing sort situation of the list and use an arbitrary comparer for it rather than what the user might want.

This commit introduce a new property on the concrete CompletionDataList subclass (so to not break the existing interface) that is dynamically queried to see if a custom comparer need to be used for every sorting (or indirect comparisons).