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

Thinking about it, I'm not sure why the test works. The iteration seems to be sorted often but not always?
```python
[i for i in set([0, 5, 1, 5, 3, 0, 100])]``
>>> [0, 1, 3, 100, 5]