Hof version of data.set
This branch adds a new module to Data, viz. SetBy. This module is the non-overloaded version of Data.Set. By convention every overloaded function in Data.Set is replaced with a higher-order function version with the same name extended with 'By'. Some of the standard overloaded instances have been replaced by higher-order functions.
This change is required for users who want to use sets but use a different way of comparing elements for ordering other than <.