Generate: contrastive search with full optional outputs
# What does this PR do?

This PR further massages PT's `contrastive_search` in advance of the conversion to TF. It does the following modifications:
1. Pipes additional outputs that were missing (e.g. when `output_attentions` is `True`)
2. Rewrites part of the input replication to share logic with beam search -- replicating the input for `top_k` candidates is the same as replicating the input for `num_beams`
3. Removes additional redundant/unused operations
4. Because we now have all outputs (see 1), adds the standard suite of tests for a generation method
5. Moves integration tests to the corresponding model folder

All tests passing locally (`RUN_SLOW=1 py.test tests/* -k contrastive -vv`)

After this PR, we can start with the TF conversion.
_The documentation is not available anymore as the PR was closed or merged._