What is garbage collection in C#?