Class providing ordering of executions based on priority.
Each class instance wraps a supporting runner and then provides different runner instances, each
one enqueuing executions with a specific priority.
Each enqueued execution will age each time an higher priority one takes the precedence, so that
older executions slowly increases their priority. Such mechanism has been implemented to avoid
starvation of low priority executions. Hence, when assigning priority to different runners, it is
important to keep in mind that the difference between two priorities corresponds to the maximum
age the lower priority execution will have, before getting precedence over the higher priority
one.
Note that the queue is not shared between different instances of this class.
Created by davide-maestroni on 04/28/2015.