make is_positive and is_negative like new assumptions
only call evalf if doit did something did something
add check for is_zero in re and im
7642: KroneckerDelta more judicious in evalf; = 0 for nonzero diff