dsolve: Handle integrals expressed in terms of Piecewise.

Fixes the test_ode failure.
Piecewise._eval_interval for cond. indep. of integration var.

This fixes the Integral of a Piecewise when the conditions are
independent of the integration variable.

Before:

>>> integrate(Piecewise((0, Eq(y, 0)), (x*y/sqrt(y**2), True)), (x, 1, 3))
4*y/sqrt(y**2)

After:

>>> integrate(Piecewise((0, Eq(y, 0)), (x*y/sqrt(y**2), True)), (x, 1, 3))
Piecewise((0, y == 0), (4*y/sqrt(y**2), True))
Add correct assumptions in tests and docstrings.

Since there is no way to assume b > a, we will have to do with
assuming that a is negative and b is positive.
Identify special cases in symbolic heurisch integration.

A wrapper around heurisch that checks if the antiderivative
contains poles, reevaluates the integral at those poles, and
returns a Piecewise.
Add tests for issue 1428.
Fix the integral of x**y w.r.t. x

Don't assume the exponent y != -1. Return a Piecewise instead.
Fix the integral of x**y w.r.t. y

Don't assume that the base x != 1. Return a Piecewise instead.
Fix the integral of exp(n*x) w.r.t. x

Don't assume that the factor n != 0. Return a Piecewise instead.
Fix the integral of cos(n*x) and sin(n*x) w.r.t. x

Don't assume that the factor n != 0. Return a Piecewise instead.
Reorganize risch's fix into if/else.
dsolve: use as_independent to simplify the code.
Reorganize trigintegrate's fix.
Merge branch 'master' into integrals2
Use distribute_and_over_or to simplify conditions.

This will simplify, for example, conditions of the form:
Or(And(x, y), x, y)

to:
Or(x, y)
Integral returns Piecewise: more tests.
Reorganize heurisch's fix. Return early if x independent.
Update solvers/ode.py following review.
Implement conds='piecewise'.
Merge branch 'master' into integrals2

Conflicts:
	sympy/functions/elementary/piecewise.py
Fix assumptions on A in ode test.

The solution that is tested is only valid for A != -1.
Assume A > 0 to exclude that possibility.