process imaginaries to determine whether expr is positive or negative

pairs of imaginary factors change the sign of an expression; detecting these was added to Mul._evalf_is_negative.
> do a quick exit here.

based on what? Not the presence of sign.has(c.sign) I hope. Because even though we don't know what the sign is we might know if it is nonpositive or nonnegative. That now gets handled at the end. It would have been handled in the next pass if the while loop was used, however...and I think you know that I prefer that. You can't exit quickly unless you do all the tests that precede this point in the code so we might as well run the loop as done in the commit before this one.