What is the difference between a definition and a declaration?