Building Safe GenAI Applications: An End-to-End Overview of Red Teaming for Large Language Models