I removed `hash` and removed this CR.  The reason I'm keeping the first-class module instead of a function is that this makes the common case of `Allow_cutoff`  shorter: you don't need to repeat yourself by writing `~output:(module Foo.Bar.Baz) ~allow_cutoff:(Foo.Bar.Baz.equal)`.