p_mask in SQuAD pre-processing
In question answering, the `p_mask` is a mask with 1 for tokens than cannot be in the answer (0 for token which can be in an answer).

Currently the p_mask construction fails for RoBERTa, and is overall not very robust as it depends directly on the `token_type_ids`, while some models do not make use of them and therefore do not generate them (best example being RoBERTa).

This PR changes the way the p_mask is built, and slightly changes it as well. Up to now, here's what was done with the `p_mask`, I believe with the original implementation being google-research BERT's SQuAD script: 

- Consider every token that is not the question to be a possible answer. This includes special tokens, and padding tokens.

This PR changes this by removing those special tokens and padding tokens from the possible answer pool. It does still keep the classification token as a possible answer, given that it's sometimes used as the `impossible` token.

closes https://github.com/huggingface/transformers/issues/2788