An Information-Theoretic Approach to Generalization Theory