Generate: add generation config class
# What does this PR do?

Adds the class that handles generation configurations. From this class, we can then start working on the interaction with other parts of the Hugging Face 🤗 ecosystem. See https://github.com/huggingface/transformers/issues/18655 for the original plan, which matches this implementation.

Throughout the PR, there are a few very visible comments where your input would be appreciated to establish solid base functionality.

The expected follow-up tasks are:
1. We can load a Generation Config from a Model Config (to make it compatible with all existing repos)
2. `.generate()` inherits default values from generate config, instead of from model config. Add an argument to pass a generation configuration.
3. Add doctests for loading, storing, and using with `.generate()`
4. The top 100 models with generate compatibility get a PR with the corresponding generation confg file(s). At least 1 has multiple generation config files, to be used as an example.
5. (bonus) Generate config validates its attributes at initialization time
6. (bonus) Pipelines make automatic use of the appropriate generation config file
7. (bonus) Ensure that advanced functionality (e.g. models like RAG and Trainer) operates well with the generation config file
_The documentation is not available anymore as the PR was closed or merged._<|||||>The docs for this PR live [here](https://moon-ci-docs.huggingface.co/docs/transformers/pr_20218). All of your documentation changes will be reflected on that endpoint.<|||||>The docs for this PR live [here](https://moon-ci-docs.huggingface.co/docs/transformers/pr_20218). All of your documentation changes will be reflected on that endpoint.<|||||>The docs for this PR live [here](https://moon-ci-docs.huggingface.co/docs/transformers/pr_20218). All of your documentation changes will be reflected on that endpoint.<|||||>@sgugger @patrickvonplaten all comments addressed. There is a doctest example that loads our first `generation_config.json`, [from gpt-2](https://huggingface.co/gpt2/blob/main/generation_config.json) 🙌 

I took the liberty to add a few goodies, like making it a public class (to allow `from transformers import GenerationConfig`), adding a `__repr__` (for a preview) and sections in the `__init__` docstring (I think users will appreciate).