Add PrioritizedIterator to handle empty priorities in a smarter way

This wrapper allows recursive fallback on lower priorities in case there are no tasks of the selected priority. This way, the feeder will not act as empty when there are remaining tasks with other priorities than the one selected. This behaviour was triggering SPNL's throttling mechanism in unneeded cases.