swap typeclass arguments

I thought that going from large to small (category, product, identity)
was much more intuitive than the "p k k k" indices from
categories-extra, but it turns out that always having the same type
variable at the end is much more convenient when creating generic
structures, because partially-applying the first few type variables
gives you a type constructor with the same interface as the types with
fewer type variables.
Functor constraints on HasIdentity

categories-extra puts a Bifunctor constraint on Monoidal, and I don't
have any particular reason to deviate from this default.
Explaining who gets which Functor and why
Free versions of all typeclasses
remove tests from the API