Fix issues in bucket generation queue

Bucket generation queue fails the simple test of

val queue = new BGQ[String](6 seconds)
-- wait for 3 seconds
queue.add(1)
queue.add(2)
queue.add(3)
--- wait for 4 seconds
queue.collect(2 seconds) -> return none

This and other errors occur due to a leading empty list for the oldest bucket.
This change maintains the invariant that there will not be a oldest empty bucket.