Quantum Computation And Communication Technology