give more explicit error messages
add class name to hash value

This is what is done in Basic so I am doing the same here.
autopep8/pep8 mods
pep8 E702: one statement per line
Merge pull request #1570 from smichr/3433

3433: radsimp watches for pure radical in denominator
pep8 correction: don't include space around * and **
Add Jens Hedegaard Nielsen to .mailmap
Update version to 0.7.2
matrices: add test for args

There is a disturbing feature that ImmutableSparseMatrix needs rows and cols
to be defined in the _new method. Here is a record of what happens when
other things are tried:

If I don't assign rows (for example) in the `__init__` then tests fail

```
_______________ sympy/matrices/tests/test_matrices.py:test_cross _______________
  File "/sympy/sympy/matrices/tests/test_matrices.py", line 1971, in test_cross
    test(A.cross(B))
  File "/sympy/sympy/matrices/tests/test_matrices.py", line 1966, in test
    assert ans == M
AssertionError

________________________________________________________________________________
______________ sympy/matrices/tests/test_matrices.py:test_adjoint ______________
  File "/sympy/sympy/matrices/tests/test_matrices.py", line 1996, in test_adjoint
    assert ans == cls(dat).adjoint()
AssertionError
```

And if I put a print statement in the test_cross I get

```
  File "/sympy/sympy/matrices/tests/test_matrices.py", line 1972, in test_cross
    test(A.cross(B))
  File "/sympy/sympy/matrices/tests/test_matrices.py", line 1966, in test
    print type(ans), type(M), M.rows
  File "sympy/matrices/matrices.py", line 2806, in __getattr__
    raise AttributeError("%s has no attribute %s." % (self.__class__.__name__, attr))
AttributeError: ImmutableSparseMatrix has no attribute rows.
```
And that's weird because the `test_args` test (which tests for rows and cols) *passes*.

If I write it as a property like this

```
    @property
    def rows(self):
        return int(self.args[0])
```

I get a complaint from Sparse:

```
  File "sympy/matrices/tests/test_matrices.py", line 1970, in test_cross
    A = cls(a)
  File "sympy/matrices/sparse.py", line 85, in __init__
    self.rows = r
AttributeError: can't set attribute
```

So...I don't understand what is going on. What is there works but it
probably can be done in some better way.
matrices: test all subs
fix quality and ode constant numbering bug

- added test for real root in euler ode solver
- revert some tests in test_dsolve_options()
Merge pull request #1567 from smichr/matrices

Matrices tweaks
Coding style: Clean up test_facts, keeping the unusual formatting.
Coding style: Clean up test_numpy, keeping formatting of matrices.
improvements to code quality, with better sympy use
2823: added test for previously missing parentheses
Merge pull request #1583 from xoedusk/2823_test_fcode

2823: added test for previously missing parentheses
Add Brian Stephanik to the AUTHORS/aboutus. Welcome to SymPy!
Merge pull request #3 from smichr/codequality

pep8 E702: one statement per line
Merge pull request #1573 from jrioux/codequality

Some code clean up

Formatting of dict, line indentation, stuff fitting on less lines, and superfluous whitespace.