Add GPT2ForSequenceClassification based on DialogRPT
# What does this PR do?

This PR implements `GPT2ForSequenceClassification` in order to support DialogRPT.
Closes https://github.com/huggingface/transformers/issues/7493.

`GPT2ForSequenceClassification` uses the last token in order to do the classification, as other causal models (e.g. GPT-1) do.

Since it does classification on the last token, it requires to know the position of the last token. If a `pad_token_id` is defined in the configuration, it finds the last token that is not a pad token in each row. If no `pad_token_id` is defined, it simply takes the last value in each row of the batch. Since it cannot guess the pad tokens when `inputs_embeds` are passed instead of `input_ids`, it does the same (take the last value in each row of the batch).

Here's how to replicate the results shown on the [original implementation](https://github.com/golsun/DialogRPT#use-rankers-only):

```py
from transformers import GPT2Tokenizer, GPT2ForSequenceClassification
import torch

tokenizer = GPT2Tokenizer.from_pretrained("gpt2")
model = GPT2ForSequenceClassification.from_pretrained("directory_where_pth_config_are_saved")

model_input = tokenizer.encode("I love NLP!<|endoftext|>Here’s a free textbook (URL) in case anyone needs it.", return_tensors="pt")
result = model(model_input, return_dict=True)
final_output = torch.sigmoid(result.logits)

print(final_output)
# tensor([[0.6129]], grad_fn=<SigmoidBackward>)
```

Once this PR is merged I'll open two "Good first issues":

- Implement `GPT2ForSequenceClassification` in TF2
- Implement sequence classification models for other causal transformers