Sparse matrix column/row removal
Reference issue
Fixes #2659 (closed)
What does this implement/fix?
Adds two functions SparseMatrix::removeOuterVectors(start, num) and SparseMatrix::insertEmptyOuterVectors(start, num) to remove/add num contiguous outer vectors starting at start. If the first vector is not empty and it is removed, then m_outerIndex[0] != 0, which in theory shouldn't be an issue. However, I am not confident that every sparse matrix function can handle m_outerIndex[0] != 0. For this reason, and because its relatively inexpensive to address, I explicitly handle this case and shift the data so that m_outerIndex[0] == 0.