The Ricci Flow: Techniques and Applications