ENH: Swap rows in sparsefuncs
Made the following changes
a] Replaced numpy slicing with concatanate
b] Added swap_sparse_column
COSMIT: Replaced ptr1/2 with start/stop
COSMIT: rng.permutation rather than rng.shuffle
Made the following changes
1. Minor changes to docs
2. Replaced swap with inplace_swap
Merge pull request #3104 from MechCoder/swap_sparse

[MRG+1] ENH: Swap rows in sparsefuncs
Update numpy and scipy requirement
Change the order of test_score and train_score in the _fit_and_score docstring to reflect what the code actually does
Merge pull request #3127 from rmcgibbo/_fit_and_score-docstring

[DOC] Make _fit_and_score return value docstring consistent with code.
DOC random_state is an arg to LogisticRegression
pep8 remove unused variable
ENH: use setuptools for bdist_wheel command

Enable wheel building by importing setuptools.
DOC a note on shuffling for cross-validation
ENH shuffle option for StratifiedKFold
DOC shuffled StratifiedKFold now in whats_new
BUG: fix doctests
DOC: fix restructured text
FIX MemoryError raising in trees (+test)

I got this wrong all along: Cython functions that don't return Python
objects need an "except" clause to actually propagate exceptions (spotted
by @GaelVaroquaux, @arjoly).

Simplified memory management and unified error messages by safe_realloc.
DOC mention that train_test_split returns a random split
Merge pull request #3133 from kmike/patch-2

Mention that train_test_split returns a random split