ENH much more efficient sparse min/max with axis

The current implementation of `min`, `max` for sparse matrices with a specified axis is very slow, and the use of `np.where(M.indices == col)` wastes both time and memory. I don't promise this to be the tightest possible alternative, but it certainly works much faster at scale!

Benchmarks in seconds:
```
side    density master   commit1  latest
100     0.001   0.0232   0.0011   0.0009
100     0.01    0.0238   0.0033   0.0009
100     0.1     0.0162   0.0050   0.0009
1000    0.001   0.1574   0.0275   0.0010
1000    0.01    0.1858   0.0281   0.0013 
1000    0.1     0.4279   0.0302   0.0032 
10000   0.001   4.2201   0.2791   0.0048
10000   0.01   27.7040   0.2979   0.0188
10000   0.1          -   0.5101   0.2276
```