[WIP] Sparse output KNN

WIP in early stages

- [x] Implement Cython CSR rowise mode function in sparsefuncs_fast
- [ ] Implement Cython CSR rowise weighted_mode function in sparsefuncs_fast
This is not pep8.  Also I think this can break in case y has explicit zeros.
Or what if a user has an array with {+1, -1} labels and no zeros, but for some crazy reason converts it to sparse matrix? :/