* 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
The CSC matrix API mirrors the CSR matrix API. However, there
are subtle differences throughout (both in the available
methods and the implementation) that I believe makes any attempt
to avoid the duplicate effort futile.