initializes round buffer of size n
Returns the tail item (non-destructive)
Input range primitives
Get the item at the front (non-destructive)
Check if buffer is full
Current number of elements
Move the front forward (destructive)
Add and item at the tail and move pointer forward (destructive)
Cyclic buffer, see https://en.wikipedia.org/wiki/Circular_buffer Bails out if you try to push beyond its size
Note the RoundBuf has copy semantics. So if you pass in a Struct it will copy its contents.