class_docstr: A negotiation teacher that loads the CaSiNo data from
  https://github.com/kushalchawla/CaSiNo.
  
  Each dialogue is converted into two datapoints, one from the perspective of each
  participant.
code: def act(self):
      if self.dialogue_idx is not None:
          # continue existing conversation
          return self._continue_dialogue()
      elif self.random:
          # if random, then select the next random example
          self.episode_idx = random.randrange(len(self.episodes))
          return self._start_dialogue()
      elif self.episode_idx + self.step_size >= len(self.episodes):
          # end of examples
          self.epochDone = True
          return {"episode_done": True}
      else:
          # get next non-random example
          self.episode_idx = (self.episode_idx + self.step_size) % len(
              self.episodes
          )
          return self._start_dialogue()
  
imports: from parlai.core.teachers import Teacher
  from .build import build
  from parlai.utils.io import PathManager
  import json
  import os
  import random
  import copy
label_desc: Use image node_id 8 for calling the CasinoTeacher obj's underlying member method code with example usage: obj.act() and returns: self, self, dict, self