Skip no-op flushes

The `vrt_producer_flush` causes a producer to “give up” any slots that is has claimed but not yet used.  This can be useful if the producer is blocking other producers, which have claimed a later chunk of slots, from being able to publish those slots.

We now only perform this operation if there are actually unused slots that we can give up.  If there aren't, then the function is a no-op.  (Before, we would claim an entire new batch of slots and then immediately give them up.)