message: add a flag to optionally suppress all the fancy ascii escape characters in the go board rendering
diff: @@ -319,7 +319,8 @@ class Position():
  new_lib_tracker = copy.deepcopy(self.lib_tracker)
  return Position(new_board, self.n, self.komi, self.caps, new_lib_tracker, self.ko, self.recent, self.board_deltas, self.to_play)
  - def __str__(self):
  + def __str__(self, colors=True):
  + if colors:
  pretty_print_map = {
  WHITE: '\x1b[0;31;47mO',
  EMPTY: '\x1b[0;31;43m.',
  @@ -327,6 +328,14 @@ class Position():
  FILL: '#',
  KO: '*',
  }
  + else:
  + pretty_print_map = {
  + WHITE: 'O',
  + EMPTY: '.',
  + BLACK: 'X',
  + FILL: '#',
  + KO: '*',
  + }
  board = np.copy(self.board)
  captures = self.caps
  if self.ko is not None:
  @@ -338,7 +347,9 @@ class Position():
  appended = '<' if (self.recent and (i, j) ==
  self.recent[-1].move) else ' '
  row.append(pretty_print_map[board[i, j]] + appended)
  + if colors:
  row.append('\x1b[0m')
  +
  raw_board_contents.append(''.join(row))
  row_labels = ['%2d ' % i for i in range(N, 0, -1)]
  