So, technically, it is possible for a Sequence to get used more than once.  Meaning that with this setup, we can actually get multiple decrement()s for a single increment().  We don't use them multiple times right now, but I think it would be better to be safe.

In order to be safe, though, we have to do the increment on the Sequence.toYielder() call instead of here.  This ends up introducing a delay in when the actual incremental happens, which is unfortunate, but I don't think it's the end of the world.

I think we should move the increment into the toYielder() method of the ReferenceCountingSequence<>, and we also need to make the ReferenceCountingSegment thread-safe and aware of when it has been closed.  Once it is closed, it should reject increment() calls (let's make it return a boolean and set it to false once it is closed, meaning that it is not safe to use the instance) and return null for all of the other methods that rely on the underlying buffers.