Introduce SnapshotWritable for sorting by time/priority and remove PriorityTag

Part 3...

This, or something like it, makes it possible to do snapshot windowing. I hope this is the right idea, although I'm assuming there was probably a very good reason we didn't do the sorting previously.
I don't think this should exist. I am very, very against having this intermediate writables, they put the logic in the wrong spot, add unnecessary overhead and are very fragile as jobs evolve. If this is going to disappear, than fine I guess, but I would much prefer it didn't exist at all.