Adds an item to the tail of the Ringbuffer. If there is space in the ringbuffer, the call
will return the sequence of the written item. If there is no space, it depends on the overflow policy what happens:
OverflowPolicy OVERWRITE we just overwrite the oldest item in the ringbuffer and we violate the ttl
OverflowPolicy FAIL we return -1. The reason that FAIL exist is to give the opportunity to obey the ttl.
This sequence will always be unique for this Ringbuffer instance so it can be used as a unique id generator if you are
publishing items on this Ringbuffer. However you need to take care of correctly determining an initial id when any node
uses the ringbuffer for the first time. The most reliable way to do that is to write a dummy item into the ringbuffer and
use the returned sequence as initial id. On the reading side, this dummy item should be discard. Please keep in mind that
this id is not the sequence of the item you are about to publish but from a previously published item. So it can't be used
to find that item.