[WIP] first cut at LambdaMART

This PR is an attempt to implement LambdaMART [1]. I imagine the biggest hurdle will be coming to some conclusion over the correct API since we need to include the queries somehow. In my implementation I use an extra keyword argument, I don't know if this causes problems elsewhere. My hope is that this PR can serve as a catalyst to resolve that, and then I can finish up the PR.

TODO
- [ ] tests
- [ ] docs
- [ ] gbm comparison
- [ ] [Ranklib](http://sourceforge.net/p/lemur/code/HEAD/tree/RankLib/trunk/) comparison
- [x] support an optional cutoff parameter for NDCG, usually denoted as NDCG@k
- [ ] rewrite the example to use the yandex 2009 dataset instead of MQ2007/8 that would require the `unrar` command to execute
- [x] add a `max_rank=10` cutoff parameter for NDCG and LambdaMART and use it to compute the lambdas too
- [ ] factorize a public function `ndcg_score` in `sklearn.metrics` in pure Python first (see [this comment](https://github.com/scikit-learn/scikit-learn/pull/2580#issuecomment-33670859))
- [x] [benchmark](https://github.com/scikit-learn/scikit-learn/pull/2580#issuecomment-34137058) python and cython DCG
- [x] implement pessimistic tie break for `ndcg_score` and bench it against no-tie break (default implementation sort order) and random tie break
- [x] clarify if the pessimistic tie break is only need for the stability `ndcg_score` score or for its derivatives in the LambdaMART optim loop as well (see [this comment](https://github.com/scikit-learn/scikit-learn/pull/2580#issuecomment-33677056))
- [ ] investigate if pre-computing (caching) the ideal DCG for each query on the training set as done by Ranklib can speed up learning

Possibly for another PR:
- [ ] abstract code to support measures other than NDCG

There was also a brief discussion on the mailing list [2]. Pinging @mblondel @ogrisel @pprett from that discussion.

[1] https://research.microsoft.com/en-us/um/people/cburges/tech_reports/msr-tr-2010-82.pdf
[2] http://sourceforge.net/mailarchive/forum.php?thread_name=CAP%2B3rpGVbSux5u4dZiatV3p1f1zUvndHXoi-oh4CjMRtSpjFsw%40mail.gmail.com&forum_name=scikit-learn-general
You can precompute the logs in an array of size n_samples. Also make sure to use logarithms in base 2.