[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)

Maybe you could also point out the special case when you only have a single fixed validation set, in which you set the fold_map to 0 for the validation set and -1 for the rest.