Add `solve_upper_triangular` to `CsrMatrix`
This allows a sparse matrix to be used for efficient solving with a dense LU decomposition.
Add CscBuilder
For partial construction of Csc matrices
Start working on actual LU factorization
Complete basic version of sparse LU factorization
Reformat to compile in old version
Add LU tests
Add upper triangular solve
Complete tests of Sparse LU factorization
* CSC: Create constructor for unsorted but otherwise valid data
* Test creating csc matrix from unsorted but valid data
* Add function for validation and sorting
* Move validation function to cs.rs
* Restore pattern unit test
* Add unit test for 'major offset out of bounds' case
* Avoid permutation allocations on 'happy path'
* Reuse allocated permutation
* Fix comments for test-data examples
* Remove unnecessary iter variable
* Set up buffers for sorting up front
* Use common apply_permutation function
* Use common compute_sort_permutation function
* Move unsafe down to unchecked call
* Add panic cases to documentation
* Remove unnecessary Zero bound
* Move buffer set up away from loop
* Lift T::Zero from cs.rs
* Improve checking if values are provided
* Simplify copying from slices & add test for wrong values length
* Check duplicates after sorting
* Fix formatting
* Check values length at the beginning
* Check length of values if values != None