What is meant by "Generic" and where do we use them and why are they important - C#