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 neighbours methods overwritten, or the <astar> or <bfs> words can be used to build a new tuple.

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

<bfs> ( neighbours -- astar )

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