Added new TBaseComparator<T> abstract base class for all comparator objects that must be able to construct a TRules<T> record that uses the comparator to supply the required IComparator<T> and IEqualityComparator<T> instances.
Changed all other comparer classes in unit to derive either directly or indirectly from TBaseComparator<T>.