PERF: Sparse Series to scipy COO sparse matrix
- [x] closes #42880 
- [x] tests added / passed
- [x] Ensure all linting tests pass, see [here](https://pandas.pydata.org/pandas-docs/dev/development/contributing.html#code-standards) for how to run them
- [x] whatsnew entry

I made the test more thorough, as it only checked the output's type, but not that the output matrix was actually the expected one.

Here is the output from the asv benchmark:
```
       before           after         ratio
     [e045034e]       [042dbbc3]
     <master>         <sseries-to-coo-perf>
-      12.6±0.6ms       2.35±0.1ms     0.19  sparse.ToCoo.time_sparse_series_to_coo_single_level(False)
-      19.9±0.6ms      3.68±0.05ms     0.19  sparse.ToCoo.time_sparse_series_to_coo(True)
-      19.6±0.4ms      3.51±0.09ms     0.18  sparse.ToCoo.time_sparse_series_to_coo(False)
-        12.5±1ms         220±10μs     0.02  sparse.ToCoo.time_sparse_series_to_coo_single_level(True)
```
As you can see the performance improvement is the most dramatic when there is only one row and column level, and for an output with sorted labels. This is simply due to the fact that the labels are sorted in the `levels` attribute of an `Index`, so I covered this case, which should be the most common, with a simpler (and faster) implementation. For this reason I was thinking maybe `sort_labels` could default to `True`, but that would probably require prior deprecation warnings and all. In any case I can add this information as a performance tip to the docs, let me know what you think.
