add MoveItems to RingBuf, fixes  #19085

r? @huonw @csherratt
What is the advantage of doing it this way over just wrapping the ring buffer? `next` is the same as `pop_front` and `next_back` is the same as `pop_back`. Wrapping it allows us to reuse the `drop` ect.