Fifo::balance() takes a queue with empty head or tail and redistributes its elements so that both head and tail are roughly equal