Queues up elements until either a duration of time has passed or any threshold in a given set of
thresholds is breached, and then delivers the elements in a batch to the consumer.
Adds an element to the batcher. If the element causes the collection to go past any of the
thresholds, the batch will be sent to the ThresholdBatchReceiver.
Push the current batch to the batch receiver. Returns an ApiFuture that completes once the
batch has been processed by the batch receiver and the flow controller resources have been
released.
Note that this future can complete for the current batch before previous batches have
completed, so it cannot be depended upon for flushing.