The options type is used to make Accessors_generic flexible as to whether a
comparator is required to be passed to certain functions.
The types of map and filter_map are subtle. The input set, ('a, _) set,
reflects the fact that these functions take a set of *any* type, with any
comparator, while the output set, ('b, 'cmp) t, reflects that the output set has
the particular 'cmp of the creation function. The comparator can come in one of
three ways, depending on which set module is used
Set.map -- comparator comes as an argumentSet.Poly.map -- comparator is polymorphic comparisonFoo.Set.map -- comparator is Foo.comparator