The empty product.
Given a type class instance for H, and a type class instance for a
product, produce a type class instance for the product prepended with H.
Given an isomorphism between F and G, and a type class instance for G,
produce a type class instance for F.
A type class abstracting over the
productoperation of type classes over types of kind*, as well as deriving instances using an isomorphism. Refines ProductTypeClass with the addition of runtimeStringlabels corresponding to the names of the product elements.