[WIP] Multiple-metric grid search

This PR brings multiple-metric grid search. This is important for finding the best-tuned estimator on a per metric basis *without* redoing the grid / randomized search from scratch for each metric. 

Highlights:
* No public API has been broken.
* Some parts are actually *simplified*.
* Updates `cross_val_score` so as to support lists as `scoring` parameter. In this case, a 2d array of shape `(n_scoring, n_folds)` is returned instead of a 1d array of shape `(n_folds,)`.
* Adds multiple metric support to `GridSearchCV` and `RandomizedSearchCV`.
* Introduces `_evaluate_scorers` for computing several scorers without recomputing the predictions every time.
* Fixes #2588 (regressors can now be used with metrics that require `need_threshold=True`.

Tagging this PR with the v0.15 milestone.
This condition is for handling a user-defined callable. It's a complete black box from our point of view.