Ordering of jobs now back in!

There are some caveats.  First, in order to make this work, the
QueueEntryList has to be instantiated with the Soop query, and the whole
query result set gets analyzed so that the QueueEntryList can act like a
linked list.

Second, the run time for building the QueueEntryList can change depending
on the length of the list.  (Not a big surprise.)  But this time consuming
enough to get you close to the Apex CPU time limit if the list is getting
large.  You'll see it first if you try to add a lot of entries - if you
have a QueueEntryList with over 10,000 entries, then try to add 5000 more,
you might his the CPU limit.  If you add less, like 4000, it will work.
How this all scales is a bit unclear for now.

Third, the most entries you can ever add to a QueueEntryList is 5000 - this
is because each will get inserted, then there will be updates required to get
the Next__c fields all set, and 5000 DML rows done two times is 10000, the limit
DML rows allowed in a single Apex invocation.

So what's needed?

1) A way to add entries without bringing the whole set of entries from the DB
into memory and building the list.  This means that the QueueEntryList
constructor will need to handle more than one chain of connected entries, and
probably that doCommit() will have to reconcile them later.  Maybe this will
have to restrict the caller to adding onto the very end of the queue?

2) Perhaps a way to make some of this functionality part of a Queueable class,
so even if you do want to add onto the queue but not at the very end, you can
offload it into another Apex invocation to save yourself some limit space (mostly
CPU).