Quantum error-correcting codes