context function 2: find-operators-between

```
find-operators-between:
description:
find-operators-between(ket1, ket2)
Use Dijkstra's algorithm to find the shortest path between ket1 and ket2
See: https://en.wikipedia.org/wiki/Dijkstra%27s_algorithm
Same as find-path-between(), except we instead return the operator sequence required to get from ket1 to ket2

examples:
-- learn a grid, then find a path:
learn-grid[10, 10]
find-operators-between(|grid: 0: 0>, |grid: 5: 6>)
|op: E> . |op: SE> . |op: SE> . |op: SE> . |op: SE> . |op: SE>

-- a quick demonstration that this is correct:
SE SE SE SE SE E |grid: 0: 0>
|grid: 5: 6>

-- find pathway through a friend network:
-- first define some friends:
friends |Fred> => |Jack> + |Harry> + |Ed> + |Mary> + |Rob> + |Patrick> + |Emma> + |Charlie>
friends |Sam> => |Charlie> + |George> + |Emma> + |Jack> + |Robert> + |Frank> + |Julie>

find-inverse[friends]

-- find friend pathway from Fred to Sam:
find-operators-between(|Fred>, |Sam>)
|op: friends> . |op: inverse-friends>

-- find friend pathway from Fred to Julie:
find-operators-between(|Fred>, |Julie>)
|op: friends> . |op: inverse-friends> . |op: friends>

-- verify we reach Julie using this operator sequence:
friends inverse-friends friends |Fred>
11|Jack> + 8|Harry> + 8|Ed> + 8|Mary> + 8|Rob> + 8|Patrick> + 11|Emma> + 11|Charlie> + 3|George> + 3|Robert> + 3|Frank> + 3|Julie>