Rishabh & Parth 2012 xapian-letor work

Refactoring on which subsequent GSoC work is based.

Also includes implementations of ListNet & ListMLE which have since been discarded due to possible licensing conflicts (this is noted in the source code in these commits).
There's no check to make sure `i` can't run off the end of the `token` array.