Quantum Computation and Simulation