Determinant

Adds logic to matrix expressions determinant class for 

    BlockMatrix, MatMul, Transpose, Inverse

Adds `Q.singular` predicate

Theano printing for determinant

https://code.google.com/p/sympy/issues/detail?id=3691