zero -> even & finite; modify Mul._eval_is_infinite

Note: no routine need worry about returning a False, only True or None.
e.g. the infinite routine should not start with

if all(a.is_infinite is False for a in self.args): return False

because that will already be handled by the finite routine.