(feat) added heuristic evaluation with fixed horizon

solve_heuristic now looks ahead a few moves to determine the best move to make at this instant.

it returns a history of which the first move is the players move and the rest are optimal moves for opponents.