Originally written for the lab task, but now it is a general-purpose A* search library