use O(1) queue during bfs traversal

The fastutil's IntArrayList used for the FIFO queue during BFS
traversal has O(N) dequeue---it shifts all remaining elements to the
front of the array by copying.  Use the IntArrayFIFOQueue instead,
which has both O(1) enqueue and O(1) dequeue.