is_zero and free_symbols modifications

is_zero is needed to identify alternate *trivial* forms of 0 as
in Integral(0, ...). It should never do more than look for a literal
0 someplace. For this reason, the Integral.is_zero routine was modified
and the advanced processing for other mostly trivial cases of an integral
being 0 was moved to the doit method.

foo.is_number is equivalent to not foo.free_symbols but is a faster way of
arriving at that answer because is_number will fail if a single free
symbol is encountered. For this reason, the Integral.is_number routine
was modified.

foo.free_symbols should give any free symbols in the expression *as
written* without any regard to whether those symbols will disappear after
simplification of some sort. The test for is_zero was removed from
expr_with_limits calculation of free symbols for this reason.

Other comments about the rationale of these changes are in the test
suite (esp in test_basic) so that anyone changing the behavior will be
sure to see the desired state of affairs.
Added allSAT
Added Model class.
move Integral.is_zero to _eval_is_zero
make log._eval_is_zero more naive: no simplification
Fixed variable naming.
remove redundant is_number routines
change is_zero to _eval_is_zero for Sum and Product
make Product and Sum is_number more naive

is_number is a yes or no question equivalent in answer to
not foo.free_symbols. It should not use evaluation or assumptions
to answer the question.
update comment [skip ci]
add literal flag to evalf
modify is_comparable
use literal flag in assumption related to numbers
7642: KroneckerDelta more judicious in evalf; = 0 for nonzero diff
make is_positive and is_negative like new assumptions
modify test which takes a long time

This only takes a long time in this branch because an attempt
at evaluating the integral is attempted now...and that integral
is zero and this takes a long time in the evalf routine. Since
we are only testing the type of arguments in this test (not
the evaluation of the integral) it seems reasonable to change the test.
Added returning of False for UNSAT theory.
added function for LaTex printing of Xor statements
keep floor(i) unchanged if i is imaginary symbol
`ufuncify` makes actual ufuncs

This is a rough pass at getting ufuncify to make actual ufuncs. It
works, but needs some cleanup, optimizations, tests, and documentation.