Change data storage type in TopNNumericResultBuilder.

  * Use PriorityQueue to store
  * Checks to see if should even bother adding to Queue before adding.
  * Re-orders Queue on build() call.
  * Ideally the order would be directly preserved on build(), but this is a close second.
The logic works roughly as follows:

Check and see if the new item fits somewhere in the queue (queue is not full or value is greater than minimum in the queue).

If it is then the value is added, and the old one is popped off. As such it can contain up to threshold+1 values before the extra value gets removed.