Batch - the most atomic unit of learning.

        For this reinforforcer, that involves:

        1. Roll out environment and store out experience in the buffer
        2. Sample the buffer and train the algo on sample batch

def train_batch(self, batch_info: BatchInfo) -> None:
        """
        Batch - the most atomic unit of learning.

        For this reinforforcer, that involves:

        1. Roll out environment and store out experience in the buffer
        2. Sample the buffer and train the algo on sample batch
        """
        # For each reinforcer batch:

        # 1. Roll out environment and store out experience in the buffer
        self.roll_out_and_store(batch_info)

        # 2. Sample the buffer and train the algo on sample batch
        self.train_on_replay_memory(batch_info)