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
change opt name to follow our standard
Add opt local_adv_sub1_adv_inc_sub1

AdvancedSubtensor1(AdvancedIncSubtensor1(0s, y, idx), idx) -> y
AdvancedSubtensor1(AdvancedSetSubtensor1(x, y, idx), idx) -> y

gh-2246

TODO: doc the new tag
optimize consecutive cast
Raise a better error if scikits.cuda isn't installed
Better doc and remove sphinx error.
remove sphinx error
Better doc.
Don't import function that are only available when we can use the GPU.
Fix sphinx warning and better link.