Add the groundwork for a winning strategy using minimax algorithm.

I will be implementing the minimax algorithm to try to find the solution
in a timely manner.

Simple optimizations, like removing equivalent moves at the beginning of
the game state tree, seems to cut down well on the memory and speed usage of
the StateTree class.