However, BridgeState, FarmerState and WaterJugState must still define a default getHeuristic method:
public int getHeuristic(State goal) { return 0; }
Now states will come off the priority queue in no particular order during best-first search.
When we fix the search algorithm later this default heuristic will result in an optimal breadth-first search for these simple problems.