opt: transpose(inv) -> inv(transpose)

This transformation canonicalizes sandbox linalg ops so that the various
cholesky-related transformations are not confused by a transpose.
opt: solve(chol) -> solve(triangular, chol)

Cholesky outputs a triangular matrix, so if a general solve is applied to
a cholesky output, then transform it into a triangular solve.
enh: infer_shapes for MatrixInverse
fix: local_log_add dont crash on >2 args
enh: tag_solve_triangular transpose case
enh: faster CGer
check if the node has an owner before accessing owner op
- remove a variable that's not used anymore
- remove unnecessary comments
adding infer_shape test for MatrixInverse Op
testing Solve perform method with specific cases for lower and upper traingular matrices
added unit tests for transinv_to_invtrans and tag_solve_triangular
registering local optimization for Solve op
improving test
updated test so that it tests triangular theano matrices
Merge pull request #2237 from aalmah/jaberg-may21

fixing #1868 Misc accumulated fixes