A ReceiverComparator is used to sort receivers controlled by a time keeper.
Receivers are sorted according to ReceiverTime and priority using the
compare() method. First receivers are sorted according to ReceiverTime.
ReceiverTimes are partitioned into three categories: nonnegative times,
PrioritizedTimedQueue.IGNORE times and PrioritizedTimedQueue.INACTIVE
times. Nonnegative times precede IGNORE times precede INACTIVE times.
Within the nonnegative time category, smaller times precede larger
times. The IGNORE and INACTIVE categories each consist of a single
value so within these categories comparison results in equality.
If it is determined that two receivers are equivalent according to
ReceiverTime, then comparison is made according to the receiver priority.
A larger receiver priority will precede a smaller receiver priority.
If it is determined that two receivers are equivalent according to
ReceiverTime and priority, then the compare() method returns 0.