Prevented IceMapSolver from getting stuck in cycles when searching for a solution. Further simplified IceMapSolver's solve method (no more method overloading and it always tracks visitedTiles).

SolutionVisualizer will print a message across the canvas if no solution was discovered.