Precision and recall metrics

This code implements two versions of the precision and recall metrics.
The first version is the standard information retrieval formulation. The second is a version that has appeared in the literature and is known to behave about the same as the first version.

Two bugfixes are included, one for the TopNMetricBuilder class (bug #521) and one that fixes our random ItemSelectors (which were not actually random)