fault-tolerant quantum computation error-correcting codes quantum cryptography quantum information theory