Harmful Fine-tuning Attacks and Defenses for Large Language Models: A Survey