watch for negated base pairs

In theory this problem should be handled by signsimp but
sqrt(-(x - z)) signsimp only looks for things that can have a negative
sign exptracted so (x - z)/sqrt(z - x) becomes (x - z)/sqrt(-(x - z))
and that doesn't simplify unless we look for the negated base in powsimp.

Only a minimal attempt is made to find the negated pair. If one desires
other things like x + y*(z - x) to be recognized as the negated expression
of -x + y*(x - z) then signsimplification should be done first.

>>> (x + y*(z - x))==(-(-x + y*(x - z)))
False
>>> signsimp((x + y*(z - x)))==signsimp((-(-x + y*(x - z))))
True

Number that are negated are handled elsewhere so these are sepcifically
exclluded from consideration by the added code.
heurisch_wrapper: Leave the original poles alone.

When integrating with heurisch_wrapper, we identify poles in the
denominator and reevaluate the integral at those poles. This is
pointless if the same poles where already in the integrand to
start with, so we now leave these poles alone.

Fixes issue 3827:
`integrate(sqrt(x**2/((y - x)*(y + x))), x)` showing some infinities
https://code.google.com/p/sympy/issues/detail?id=3827
Merge pull request #2112 from jrioux/integrals

heurisch_wrapper: Leave the original poles alone.
Partially make undefined Functions picklable (issue 1198)

The fix, which is described at issue 1198, now makes it possible to pickle
functions in an interactive session.  For example

In [1]: import pickle

In [2]: pickle.dumps(f)
Out[2]: 'c__main__\nf\np0\n.'

However, it does not work in other situations. For example, in a regular
Python session, it will not work.  If you create a script with

import pickle
from sympy import Function
pickle.dumps(Function('f'))

it will not work.

However, this *does* fix many issues in SymPy Live, including issue 2600,
which prevented most examples using undefined Functions from working.

Unfortunately, the tests in test_pickle.py seem to be among the instances
where this doesn't work.  I don't know how to set up a test situation where
this does fix the problem.

This fix should be considered a temporary one. We really need to rewrite
Function so that it doesn't create classes on the fly (see issue 1688).
Move all statistics related tests into the statistics module

This module is deprecated, so keeping the tests together makes it easier to
ignore the deprecation warning during the tests (which otherwise raises an
error).
Merge pull request #2114 from asmeurer/pickle

Partially make undefined Functions picklable (issue 1198)
Make the default color of LaTeX printing black instead of blue
Merge pull request #2115 from asmeurer/statistics_deprecation

Move all statistics related tests into the statistics module
Merge pull request #2111 from smichr/powsimp

watch for negated base pairs in powsimp
3826: reverse tan double angle
x.replace(x, y) -> y
sympify replace input
Merge pull request #2118 from smichr/replace

x.replace(x, y) -> y
Merge pull request #2122 from smichr/replace

sympify replace input
refactor the Miller-Rabin test code

also use pow(b, 2, n) rather than b**2 % n which is a bit more efficient
Fix srepr(Function) for non-undefined Functions

Now srepr(sin(x)) gives sin(Symbol('x')) instead of
Function('sin')(Symbol('x')).
use ZZ(base) in isprime
Merge pull request #2119 from smichr/isprime

refactor the Miller-Rabin test code
3821: simplify trig to exp and vice versa

recognizing I*tan(x) and tanh(x) will take a little more work
factor exptrigsimp out of simplify