Fixed a conflict and streamlined the cgate simplification

Fixed a conflict that should have been caught before.

Streamlined the cgate simplification process. Now, if you form a 2Q
gate by calling CGate(), it by default does not simplify the gate.
However, if you call CNOT or CPHASE, it does simplify the gate. I
believe this is the desired behavior.
Added an auto-labler function for quantum wires
Added CGateS to the __all__ list of gates