[GenerationConfig] add additional kwargs handling
# What does this PR do?
This add the same support that we have in the `PretrainedConfig`, where additional kwargs are automaticallu updated. 
This will allow users to re-use the `GenerationConfig` class for most of the use_cases, whithout having to add a model specific class. I was trying to load [the following `generation_config` ](https://huggingface.co/openai/whisper-small/discussions/10/files)and got half of my additional arguments deleted 😉  
_The documentation is not available anymore as the PR was closed or merged._<|||||>Also will have to add test + this is apparently breaking a lot of things haha <|||||>Okay, after talking a bit with @gante and testing, this is not the best, this PR will focus on other missing functionalities. Mostly addition of the `dict_torch_dtype_to_str` function, as the `dtype` could be passed to the generation 😉 
The problem is mostly that if we process all the additional kwargs, we are getting all of the arguments from the `configuration.json` which mixes things up. 
The simplest solution is either to store them in `generate_kwargs` or re-write the configuration for the model. I though this was cumbersome but it is actually the most logical and cleanest way to do it. 

EDIT : gonna just add a condition, if the kwargs are from a config file, they are not added. <|||||>Now only thing left is to add a pretty test with all the different edge cases I encountered.