Added stitch function to convert a path from edgelist to inport-node-outport list

The edge list returned by shortest-path is a little awkward if you're going to use it to generate per-node configurations. The `stitch` function takes a path as a list of edges and converts it to a node-centric view, returning a list of `(port option * Node.t * port option)`.

- Added stitch function in Topology_Core.ml
- Exposed it from relevant .mli files