Add support for directed graphs to mapper
The mapper currently assumes the graph is undirected which leads to a number of unnecessary cnot flips (using Hadamards). We will need to weigh mapping qubits to a position with an easy CNOT (without flips) versus a mapping that may require less SWAPs. Note that SWAPs cost much more than a CNOT flip, so this needs to be taken into account.