fix is_zero detection on Mul._eval_is_* tests

Once a None is obtained for is_zero, it should no longer be updated.
The return value must consider the value of is_zero. This can
change if S.Zero.is_imaginary = S.Zero.is_real = True is ever true.

The routines were shortened a bit, too.
Small improvments for Mul._eval_is_real/imaginary

1. removed fuzzy_not import (it's redundant)
2. slight formatting changes
3. add an early exit if t is not a complex number
4. renamed: is_zero -> zero (like the real variable)
5. simplify "if real and is_zero is False" branch of _eval_is_real
Make Mul._eval_is_hermitian/antihermitian like Mul._eval_is_real/imaginary
Change is_integer/positive/real to _evals_is_* helpers
add Mul.is_nonzero handling
revert complex handling in Mul._eval_is_(real|imaginary)
fix Mul._eval_is_imaginary
simplify Mul.is_imaginary routine
clean up tests
simplify Mul.is_antihermitian routine
affirm some basic assumptions wrt real/imag/complex
add quick exit if factors are not complex
restore quick exit at end of loop
add bounded checking for Mul.is_nonzero
fix Mul.is_zero

>>> from sympy import *
>>> oo.is_bounded
False
>>> oo*0
nan
>>> _.is_zero
>>> var('z', nonzero=False)
z
>>> z.is_zero
True
>>> (oo*z).is_zero  # this is wrong
True
>>> (oo*z)._eval_is_zero()  # but this is right
simplify Mul.is_nonzero code
add rigorous checking in the case a zero is detected
edit Mul._eval_is_nonzero
merge Mul._eval_is_nonzero and Mul._eval_is_zero
fix Mul._eval_is_zero trap; check bounded for zero in _eval_is_real

Some important reminders:

If the order of args matters then it is not enough to use evaluate=False
to create the object with args in a new order since the sorted args are
used for the cache. Use Dummy to create the args (or else Symbol with
new names for the arguments). I prefer Dummy because then you don't have
to worry about a name and there will be no accidental duplication of symbols.

When checking for multiple args, it is not enough to use a symbol twice
in a Mul since this will create a single Pow (e.g. c, c -> c**2). Again,
using Dummy is a good idea.