add Dual functors
Move the diagonal functor to Functor.Product
add the Hom functor