Refactored compute-next-move so that it's not modifying the board state (like a good side-effect-free function)
This also has the happy effect of making my tests simpler; there's (mostly) no global board-state to keep track of