Fix line-jumping bug in FIFO implementation

Keep the FIFO's internal set in sync with the queue during Add/Update
operations to prevent a queue line-jumping scenario (described in a
new unit test).
Can you move this new comment down inside the struct next to the queue member, so it won't show up in godoc? Since it's an implementation note.