8247: use minpoly in Expr._eval_is_zero

Only attempt this test if self is algebraic
with hopes that the test will then be successful and fast. There
are cases where something passed the is_algebraic test but still
raised the NotAlgebraic error in minpoly:

sympy/integrals/transforms.py", line 1818, in
sympy.integrals.transforms.inverse_hankel_transform
Failed example:
    inverse_hankel_transform(ht, k, r, 0)
    Exception raised:
        Traceback (most recent call last):
        ...
    NotAlgebraic: exp_polar(0) doesn't seem to be an algebraic element
move minpoly handling to is_negative and is_positive

Failures when trying to make this go in the is_zero routine were
catastrophic and random:

https://travis-ci.org/smichr/sympy/builds/39894250
watch out for algebraics with functions (they can be slow)

Should this be a criteria in equals to keep minpoly from running
if the number has functions in it?
move _mexpand to function; give recursive option

The expressions from test_roots_slow in test_polyroots were
moved to test_arit where their ability to simplify to zero
is tested and used to demonstrate the need for a recursive
flag on _mexpand.
Merge pull request #8355 from smichr/8247

8247: use minpoly in Expr._eval_is_zero