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).
That's broken - `ranker` is declared as `Ranker ranker;` - it should be `Ranker * ranker;` and the `*` dropped from the assignments here.  It should also be deleted in the destructor (and here if previously set).