Change the `solve` function in the `Maze` class to use A* with manhattan distance as the heuristic instead
of using Uniform Cost Search (UCS). The manhattan distance heuristic is 
mathematically defined as follows: `h(n) = |n.x - goal.x| + |n.y - goal.y|`;
Where `n` is the current node and `goal` is the goal node.
