Template Haskell utility code to replicate instance declarations
to cover large numbers of types. I'm doing that rather than using
class contexts because most Distribution instances need to cover
multiple classes (such as Enum, Integral and Fractional) and that
can't be done easily because of overlap.

I experimented a bit with a convoluted type-level classification
scheme, but I think this is simpler and easier to understand. It
makes the haddock docs more cluttered because of the combinatorial
explosion of instances, but overall I think it's just more sane than
anything else I've come up with yet.

Documentation

replicateInstances standin types decls will take the template-haskell
Decs in decls and substitute every instance of the Namestandin with
each Name in types, producing one copy of the Decs in decls for every
Name in types.

For example, Data.Random.Distribution.Uniform has the following bit of TH code: