Speeds up circuit copying (#2354)
Speeds up circuit copying (#2354)

- Circuit copying currently appends moments one by one to the new
circuit.
- This causes a lot of qid shape verification and device verification.
- This is not needed for direct copying (copy()) and for slices
(circuit[2:).
- For a depth 1000 circuit with 16 qubits, this speeds circuit copy()
from 0.09 seconds to 0.00004 seconds. (About a 1000x improvement)
balopat/Cirq,quantumlib/Cirq,quantumlib/Cirq,balopat/Cirq,quantumlib/Cirq,balopat/Cirq,quantumlib/Cirq,quantumlib/Cirq