add row/col method to Sparse; correct row/col_op
immutable/mutable handling for inv methods; return same type as self

dense
    _eval_inverse
        Try handle the conversion between mutable/immutable as high as
        possible. By handling it here in _eval_inverse, it is not needed
        in the private methods that are used by _eval_inverse.
    equals
        since the other matrix might be sparse, making it mutable is
        not sufficient to guarantee that _mat will exist, so explicitly
        make it dense.
    as_mutable and as_immutable were moved here from matrices since one
    might want a mutable sparse matrix or mutable dense matrix.

matexpr
    docstring edits

immutable
    MatrixBase no longer has the as_mutable definition so one is given.

matrices
    remove as_mutable/as_immutable from here for reasons described
    above.

    eye - return same type as self

    inverse_GE - make big mutable so rref can work with it.

    __getattr__ - it helps to know which matrix is having the attribute
        problem, so now the actual class name shows rather than the
        generic "Matrix"

sparse
    submatrix - return same type as self
    cross - ditto
    eye is defined at the MatrixBase level so it's not needed here
    _upper/lower_triangular_solve - work with a copy of rhs
    _diagonal_solve - return same type as self
    cholesky - the high-level conversion between mutable/immutable is added
    LDL_decomposition - ditto
    _eval_inverse - ditto; use hstack, too

    as_mutable/immutable are defined here since they are no longer part of
    MatrixBase

test_matrices - see that immutablility is not a problem for each of the inv
    methods

test_sparse - pep8 edit
cleanup for zeros, eye and _new
matrices: docstring edits
remove _entry from Immutable
use pragma no cover for symarray
all hessian to take constraints; import x,y,z
3436: test adjoint and hash

When a __hash__ routine is added to SparseMatrix I get a recursion
error...I'm not sure how to fix this right now.
print offending method in error; clean up imports
pyflakes cleanup of matrices
add tests for GramSchmidt
reduce as_mutable
as_mutable reduction for sparse
MatrixExpr raises not implemented error for entry
add back in _entry to immutable
matrixexpr: show class in error message
cleanup col/col_op and row/row_op use
wip remove hash
Revert "wip remove hash"

This reverts commit 0bcac53b782b8cd76e58fdb709265c2a98cc3cec.

When the __hash__ is removed an error arises under Python 3.2:

sympy/physics/quantum/tests/test_gate.py:test_UGate ______________
4112  File "/home/travis/virtualenv/python3.2/lib/python3.2/site-packages/sympy/physics/quantum/tests/test_gate.py", line 48, in test_UGate
4113    assert qapply(u1*Qubit('0')) == a*Qubit('0') + c*Qubit('1')
4114  File "/home/travis/virtualenv/python3.2/lib/python3.2/site-packages/sympy/core/decorators.py", line 67, in __sympifyit_wrapper
4115    return func(a, sympify(b, strict=True))
4116  File "/home/travis/virtualenv/python3.2/lib/python3.2/site-packages/sympy/core/decorators.py", line 108, in binary_op_wrapper
4117    return func(self, other)
4118  File "/home/travis/virtualenv/python3.2/lib/python3.2/site-packages/sympy/core/expr.py", line 146, in __mul__
4119    return Mul(self, other)
4120  File "/home/travis/virtualenv/python3.2/lib/python3.2/site-packages/sympy/core/cache.py", line 85, in wrapper
4121    return func_cache_it_cache[k]
4122  File "/home/travis/virtualenv/python3.2/lib/python3.2/site-packages/sympy/core/basic.py", line 109, in __hash__
4123    h = hash((type(self).__name__,) + self._hashable_content())
4124TypeError: unhashable type: 'MutableDenseMatrix'

This is also reported in issue 880.
raise notimplemented on MatrixExpr.conjugate