Implement reductions for the product of a complex conjugate pairs (issue 2296)

This is done for Mul.as_real_imag,  e.g. im(x*x.conjugate()) -> 0

Can we do something else?  E.g. alter assumptions code to recognize x*x.conjugate() as a real.  This seems to be too costly, as was noted in the issue thread.