Investigate the use of extensible variants
Investigate the use of extensible variants (https://ocaml.org/manual/extensiblevariants.html) for:
- wires: we would not have to hardcode the wire labels everywhere and might be able to easily add more wires.
- gates: we might be able to make the gate selection cleaner and facilitate the custom gate selection.