Path finding using the A* algorithm

The path-finding vocabulary implements a graph search algorithm for finding the least-cost path from one node to another using the A* algorithm.

The astar tuple may be derived from and its cost, heuristic, and neighbors methods overwritten, or the <astar> or <bfs> words can be used to build a new tuple.

Make an A* object:
<astar> ( neighbors cost heuristic -- astar )

<bfs> ( neighbors -- astar )

Find a path between nodes:
find-path ( start target astar -- path/f )