find absolute mine or secure position

search the possible mine combination positions and filter them to find new mine or secure position

Mark mine: Marks a cell as a mine, and updates all knowledge to mark that cell as a mine as well.
Mark safe: updates internal knowledge representation given the fact that a cell is known to be safe
Add knowledge: called when the Minesweeper board tells us, for a given safe cell, how many neighboring cells have mines on them.
Make safe move: Returns a safe cell to choose on the Minesweeper board. The move must be known to be safe, and not already a move that has been made. This function may use the knowledge in self.mines, self.safes and self.moves_made, but should not modify any of those values.
Make random move: Returns a move to make on the Minesweeper board.
