'returns whether the position is a true eye of \'owner\'
Requires a recursive call; empty spaces diagonal to \'position\' are fine
as long as they themselves are eyes'

def is_eye(self, position, owner, stack=[]):

    if (not self.is_eyeish(position, owner)):
        return False
    num_bad_diagonal = 0
    allowable_bad_diagonal = (1 if (len(self._neighbors(position)) == 4) else 0)
    for d in self._diagonals(position):
        if (self.board[d] == (- owner)):
            num_bad_diagonal += 1
        elif ((self.board[d] == EMPTY) and (d not in stack)):
            stack.append(position)
            if (not self.is_eye(d, owner, stack)):
                num_bad_diagonal += 1
            stack.pop()
        if (num_bad_diagonal > allowable_bad_diagonal):
            return False
    return True
