Functors and signatures for dealing with modules for tuples.
These functors allow users to write:
module Foo = struct
include Tuple.Make (String) (Int)
include Tuple.Comparable (String) (Int)
include Tuple.Hashable (String) (Int)
include Tuple.Binable (String) (Int)
end
Hashable and Hashable_t functors is that the former's
result type doesn't contain type t and the latter does.