[MRG+1] Extend utils.sparsefuncs

Extends/improves  `utils.sparsefuncs`:

1. Adds functions to scale the rows of CSR/CSC matrices.
2. Adds functions to extract the rowwise min/max values of CSR/CSC matrices.
3. Adds `nogil` blocks in some of the critical Cython code.
4. Fixes some PEP8 flaws in the original code

This commit contains changes originally written as part of #2514, as a separate commit (Or rather: those parts that haven't been merged as part of the independant PR #3007 already). This is done mainly to facilitate rebasing/merging of #2514 at a later stage. Plus I think it makes more sense to have this as an atomic commit, as it's not tightly related to the other PR (and is probably useful on its own).