[MRG] ENH: cross-validate over predefined folds

For some datasets, a pre-defined split of the data into several folds already exists. This is the case e.g. if one wants to build upon results produced by others, or even for famous datasets such as NORB. Currently, there is no way to use such predefined folds in sklearn when using e.g. GridSearchCV.

This PR adds `PredefinedSplit` as new CV-Split class that takes a predefined split and can be fed into GridSearchCV. 

Example usage:

    # folds is an array that contains 0 for samples that are part of testfold 0, 1 for testfold 1, ....
    cv = PredefinedSplit(folds)
    gs = GridSearchCV(clf, param_grid=param_grid, cv=cv)
    gs.fit(X, y)

Yepp, that's indeed the reason. The documentation should probably be more concise about this, but I didn't know how to best word it. Still, it might be worthwhile to sort the set, to minimize surprises for users who expect it.