Update `PreTrainedTokenizerBase` to check/handle batch length for `text_pair` parameter
Consider the following example:

```py
from transformers import AutoTokenizer, AutoModelForQuestionAnswering
import torch
tokenizer = AutoTokenizer.from_pretrained("bert-large-uncased-whole-word-masking-finetuned-squad")
text = r"""
🤗 Transformers (formerly known as pytorch-transformers and pytorch-pretrained-bert) provides general-purpose
architectures (BERT, GPT-2, RoBERTa, XLM, DistilBert, XLNet…) for Natural Language Understanding (NLU) and Natural
Language Generation (NLG) with over 32+ pretrained models in 100+ languages and deep interoperability between
TensorFlow 2.0 and PyTorch.
"""
questions = [
    "How many pretrained models are available in 🤗 Transformers?",
    "What does 🤗 Transformers provide?",
    "🤗 Transformers provides interoperability between which frameworks?"
]

inp = tokenizer(text=questions, 
                text_pair=text, 
                add_special_tokens=True, 
                padding=True, 
                truncation=True,
                return_tensors="pt")

print(inp.input_ids.shape)
```

**The error in the above example is that the parameter `text_pair` is a string, but is supposed to be a `List[str]` to match the batch size of `text`.**

Currently, this silently fails because when  `text_pair` is a string it is treated as an iterable causing `zip(text, text_pair)` to erroneously build the wrong inputs to the model.  This PR adds the following:

1.  If `text_pair` is a string but the user passes in a batch of `text`, we convert the input for them automatically (For example when you want to ask multiple questions of the same passage). 
2.  Adds error checking to see if the batch length of `text` matches the batch length of `text_pair` ONLY when a batch of inputs is used.


@LysandreJik @sgugger







Thanks! Failure in the tests is unrelated (some connection problem), so merging.