Completely reworked comparison to allow custom implementations of IComparable. Fixes issue #93. Provides working comparison for sets and maps.