Revert "simplify Mul._eval_is_even"

This reverts commit 1b436d045107f610b51065e03eff0dbdf92e76c5.

This "simplification" produces loop, because Add._eval_is_odd
call in turn is_even property on Add's arguments.

fixes #8050
Revert "remove log.is_zero routine"

This reverts commit de47eb297f822edea3b70b8d8cf094072833b806.
Merge pull request #8052 from skirpichev/8050-fix

Revert "simplify Mul._eval_is_even"
when --rerun is specified print the rerun number before the test
Cleanup log._eval_is_zero, add tests
remove version constraint from pip install fastcache
Merge pull request #8054 from pbrady/rerun_counter

Print rerun counter
Drop trivial log(1).is_zero test [skip ci]
Merge pull request #8053 from skirpichev/restore-log-is_zero

Revert "remove log.is_zero routine"
return 2 from _pi_coeff as per docstring
Merge pull request #8056 from pbrady/fastcache_update

pip install fastcache without version
factor out Dummy/Symbol sanitization; remove None, too

None was being converted to False by the bool(); it should
just be removed since this represents an unknown attribute.
Merge pull request #8060 from smichr/symbol

Symbol/Dummy should sanitize in the same place
Rename assumptions: bounded -> finite, unbounded -> infinite [1/5]

fixes #7943
Rename assumptions: bounded -> finite, unbounded -> infinite [2/5]

sed -i 's/is_bounded/is_finite/g'
Rename assumptions: bounded -> finite, unbounded -> infinite [3/5]

sed -i 's/is_unbounded/is_infinite/g'
Rename assumptions: bounded -> finite, unbounded -> infinite [4/5]

sed -i 's/bounded\(=[TFN]\)/finite\1/'
Rename assumptions: bounded -> finite, unbounded -> infinite [5/5]

Change some variable names
Add warnings for deprecated assumptions bounded/unbounded

>>> x = Symbol('x')
>>> x.is_bounded
Traceback (most recent call last):
  File "<console>", line 1, in <module>
  File "/home/sk/src/sympy/sympy/sympy/core/basic.py", line 1593, in __getattr__
    raise AttributeError('is_bounded is deprecated: use is_finite instead')
AttributeError: is_bounded is deprecated: use is_finite instead
>>> b = Symbol('b', bounded=True)
Traceback (most recent call last):
  File "<console>", line 1, in <module>
  File "/home/sk/src/sympy/sympy/sympy/core/symbol.py", line 74, in __new__
    return Symbol.__xnew_cached_(cls, name, **assumptions)
  File "/home/sk/src/sympy/sympy/sympy/core/cache.py", line 91, in wrapper
    retval = cfunc(*args, **kwargs)
  File "/home/sk/src/sympy/sympy/sympy/core/compatibility.py", line 873, in wrapper
    result = user_function(*args, **kwds)
  File "/home/sk/src/sympy/sympy/sympy/core/symbol.py", line 81, in __new_stage2__
    raise ValueError('bounded assumption is deprecated, use finite instead')
ValueError: bounded assumption is deprecated, use finite instead