modify Mul._eval_is_* routines
modify assumption use
modify Add._eval_is_* routines
modify and add tests
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. (see next commit)