Simple FIFO queue, with the ability to peek at the head.
This class is simpler and more efficient than JDK alternatives based on java.util.Queue, because it does much
less (no JDK class seems to offer an unadulterated FIFO!) and above all it is backed by a circular array, to minimise
shift and copy ops (will only happen when we grow, which should be never, once we reach steady state).