add spec for determining best move
fix move calculations
attempt to cache scores
flatten the tree before calculating best score