[MRG] Sparse output KNN

- [x] ~~Implement Cython CSR rowise mode function in sparsefuncs_fast~~
- [x] ~~Implement Cython CSR rowise weighted_mode function in sparsefuncs_fast~~
- [x] ~~Backport scipy sparse advanced indexing~~


This PR originally started out with Cython based improvements, but a middle ground has been chosen for simplicity of implementation.
If you want, it's possible to clean the import by having one import by line in the form of
```
from .base import _check_weights
from .base import _get_weights
...
```