[MRG+1] 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.
I have corrected this, the test was changed so that it fails if the sampling from classes is not used. The dtype is now also maintained when predicting.