Generate: contrastive search uses existing abstractions and conventions
# What does this PR do?

This PR updates contrastive search to follow existing abstractions conventions in other generation functions. It consists of several tiny changes, with the reasoning for each change in the PR comments below.

This is part of the effort to make converting to TF easier. All slow tests pass (`RUN_SLOW=1 py.test tests/generation/test_generation_utils.py -k contrastive -vv`)
The docs for this PR live [here](https://moon-ci-docs.huggingface.co/docs/transformers/pr_19895). All of your documentation changes will be reflected on that endpoint.