do not add tests that are not prereq

It is important not to add prerequisites to a result that are
not consistent with the assumption rules. This can lead to facts
being missed, something that will be intermittent in nature depending
on the order in which the assumptions are traversed to resolve the fact

for example:

>>> from sympy.core.assumptions import _assume_rules as R
>>> print filldedent(R.prereq['imaginary'])

set(['real', 'prime', 'irrational', 'antihermitian', 'nonpositive',
'composite', 'zero', 'integer', 'odd', 'even', 'commutative',
'positive', 'noninteger', 'negative', 'nonnegative', 'complex',
'rational'])

Having an answer to nonzero is not a prerequisite of knowing the
`imaginary` fact. The same is true for antihermitian.

>>> print filldedent(R.prereq['antihermitian'])

set(['imaginary'])
do not use self._eval_is from within _eval_is routines

When _eval calls are made they short circuit the checks
and inferences made by the assumptions engine. If, instead
of this change, you changed the few instances in _eval_is_* routines
of self.is_* to self._eval_is_* there will be a failure in the
meijerint.py file in test_issue_6348.
randomize traversal of facts

This may help to expose errors in _eval_is routines that apply
constraints to the solution that are not in the prerequisites for
a fact.
Merge pull request #8135 from smichr/bound2

assumptions engine related changes