Better abstraction over run queues.

This adds some new functions: peekRunQueue, promoteInRunQueue,
singletonRunQueue and truncateRunQueue which help abstract away
manual linked list manipulation, making it easier to swap in
a new queue implementation.

Signed-off-by: Edward Z. Yang <ezyang@mit.edu>