[MRG] FIX #2372: non-shuffling StratifiedKFold implementation

This is a refactoring of @dnouri's fix for issue #2372 in PR #2450. The goal is to make the `StratifiedKFold` CV scheme not underestimate overfitting too much on datasets that have a strong samples dependencies. This important as `StratifiedKFold` is used by default by `cross_val_score` and `GridSearchCV` for classification problems.

The current implementation of  `StratifiedKFold` in master shuffles the data before computing the splits which hides the potential non-respect of the IID assumption by the dataset. This is highlighted in [a test on the digits dataset](https://github.com/scikit-learn/scikit-learn/pull/2463/files#L5R282) that as strong dependency between samples (co-authorship of consecutive samples).