Refactor PrioritySorterQueueSorter to resolve JENKINS-16247

Previously if the plugin was installed and you had jobs with equal priorities
then build order would be essentially random because it would be subject to the vagueries
or what happens when you ask Java to sort a list where everything is considered
equal.

This commit refactors the sorter to extend from the default Hudson implementation, this means
that when it encounters two equal priority jobs it can defer to the default sort order thus
preserving FIFO semantics for equally prioritized jobs.