Self-Improvement in Language Models: The Sharpening Mechanism