pub fn breadth_first_search( graph: &dyn Grid2D, start: Point2D, goal: Point2D, ) -> Map<Point2D, Option<Point2D>>