RFC:Add generic Cholesky decomposition and make Cholesky parametric on matrix type

There are still some methods that need to be adjusted for this to work completely, but I think most of the functionality should be there.
It occurs to me that if `UpLo == d`, we don't need to `triu!`/`tril!`.