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 documentation is not available anymore as the PR was closed or merged._