[WIP] scorer_params and sample_weight support

This is me picking up the remaining commits from #1574, rebasing on master, and adding a different API:

Since I want to write a `sample_group`-aware scorer, I needed an API to pass arbitrary params to scorers in cross-validation in the same way as `fit_params`. This supersedes the need for an explicit sample_weights parameter, at the cost of some duplication in the function call (`fit_params=dict(sample_weight=sw), scorer_params=dict(sample_weight=sw)`). Internally this saves us the need for special treatment, though, and allows scorers to be more powerful.

- [ ] Consider API change: `fit_params` and `scorer_params` starting with `sample_` will be indexed by train-test splits.
- [ ] support `fit_params` and `scorer_params` in learning_curve and RFECV
- [ ] test that `scorer_params` are getting appropriately indexed.
- [ ] proof of concept learning to rank grid search using this API
This is one of the changes from @ndawe's original changeset. I would suggest making these functions (learning_curve, validation_curve, RFECV) support `fit_params` and `scorer_params`, and adding them at the end so that the API doesn't change, in the same way I did in grid search.

I didn't do this yet because I wanted to get the API proposal out there so we can discuss, and also because I only really need `GridSearchCV` for what I'm doing now.