Creates an edge between two nodes with a given label (operator and optional base).
It checks if from already has an outgoing edge with the same base and op but to another target node. If so, it does not add the edge end returns false, otherwise it creates the edge and returns true.