Principles of Quantum Computation and Information - Volume I: Basic Concepts