Define _eval_adjoint etc. for Product().
Define _eval_adjoint etc. for Piecewise().
Define _eval_adjoint etc. for Integral().
3456: rhs can be matrix in upper, lower, diag solve
fix tests for up/lo/diag solvers
MatExprs propagate _eval_simplify
simplify Not evaluation logic
Merge pull request #1605 from smichr/3455

3455: Not(0)->True, Not(1)->False, else Not(arg)
Merge pull request #1604 from smichr/3456

3456 - rhs can be Matrix in lower, upper and diagonal solve methods
Added new tests
Merge pull request #1603 from smichr/3453

3451: robustify kern handling in parse_expr
pep8 and docstring edits preppend test_ to a test
Merge pull request #1590 from smichr/1836

long lines; docstrings; test suite edits
Removed use of 'Equivalent' from tests
Add assumptions on functions.

In this way adjoint(), conjugate() etc. work automatically
for those functions.

For DiracDelta, is_real==True implies is_commutative==True,
and a test must be altered.
Remove _eval_derivative of adjoint() and transpose().

This commit removes the implementation of _eval_derivative since
they relied on wrong assumptions on the differentiation variable.
conjugate(transpose(x)) == transpose(conjugate(x)) == adjoint(x)

This commit ensures that the above holds.
Add tests for adjoint(), conjugate() and transpose().
Latex printing of DiracDelta.

When raised to a power, print the exponent of the DiracDelta.
Latex printing of Heaviside, KroneckerDelta and LeviCivita.

Print Heaviside as \theta, KroneckerDelta as \delta (as before)
and LeviCivita as \varepsilon. Separate the indices on the
KroneckerDelta and the LeviCivita by commas if necessary.

Also remove _sympyrepr for KroneckerDelta, since this is inherited
from Function.