[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 changes the function signature :( can we live with it?