Generate: `model_kwargs` can also be an input to `prepare_inputs_for_generation`
# What does this PR do?

Fixes #20347 

`model_kwargs` can also be a model input in `prepare_inputs_for_generation` -- in some models it is `kwargs`, in others `model_kwargs`. 

This PR updates the input validation function to reflect that.
_The documentation is not available anymore as the PR was closed or merged._<|||||>@sgugger added a minor test.

I'd rather spend the energy removing the `**kwargs` and `**model_kwargs`, which are only used as a lazy pattern (as opposed to being forwarded to the model or similar). It would allow for much stricter checking :)