Unifying the Perspectives of NLP and Software Engineering: A Survey on Language Models for Code