ENH Refactor and speed up sparse fancy indexing

The incumbent implementation of fancy indexing in `csr_matrix` (and indirectly `csc_matrix`) relies on Python iteration in the general case for `__getitem__` and all cases for `__setitem__`. However, the general get case can be refactored with a handled specific case to use only vectorized iteration. The set case can easily be done quickly when the sparsity is not changed.