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
Merge pull request #1923 from skirpichev/2296-simplify-product-with-conjugate

Implement reductions for the product of a complex conjugate pairs (issue 2296)
Merge pull request #1913 from smichr/mod

mod prec, as_sum error, collect on Numbers
mod handles more simplification
equals tries to prove an nsimplify result
use nsimplify in geometry
geometry gets reflect method; ellipse and regular polygon are oriented

Now geometric objects can be reflected across a line.

This is not implemented for the Ellipse except in the case of horizontal
and vertical lines since arbitrary rotation of the ellipse is not supported.

Now RegularPolygon and Ellipse track their orientation so they, like
Polygon, can yield a positive or negative area.