Support fan-in, fan-out, multiple connections between nodes
This adds support for ports to fan in and fan out, mixing on fan-in. This is done by making individual `Edge`s hold multiple `Connection`s, which enumerate different port pairs. Typically each edge will only have a single connection. fixes #68