Add a concept of "in progress" to queues.

Review Request #891 — Created June 11, 2009 and submitted — Latest diff uploaded

Navi (deprecated)
Add a concept of "in progress" to queues.

This change adds a concept of "in progress" to queues, allowing us to
call start() multiple times without running the same queue multiple
times, which would just cause problems. Now we can call start() all we want,
but the queue will stay in sync.

Note that calling next() multiple times will still cause the queue to be
processed multiple times, out of order, but that's less of a problem.
next() should only be called from a task in queue that is ending.
Tested with the corresponding Review Board change, and made sure the existing queues still function as expected.