Extracting the cross validation logic from train to cross_validation

It turns out that in some very specific scenarios we can't clone a
classifier, but sklearns cross_val_score always clones the classifier.
The new mlpal.cross_validation.cross_validate helps us to run a
"custom" cross validation without cloning the classifier (but no in
parallel, of course).