Large Language Model Alignment: A Survey