TAPAS tokenizer & tokenizer tests
Author: LysandreJik
Pull request: yes

This PR aims to implement the tokenizer API for the TAPAS model, as well as the tests. It is based on `tapas-style` which contains all the changes done by black & isort on top of the `nielsrogge/tapas_v3` branch in https://github.com/huggingface/transformers/pull/8113.

The API is akin to our other tokenizers': it is based on the `__call__` method which dispatches to `encode_plus` or `batch_encode_plus` according to the inputs.

These two methods then dispatch to `_encode_plus` and `_batch_encode_plus`, which themselves dispatch to `prepare_for_model` and `_batch_prepare_for_model`.

Here are the remaining tasks for the tokenizers, from what I could observe:

- Two tokenizer tests are failing. This is only due to the fact that there is no checkpoint currently available.
- The truncation is *not* the same as it was before these changes. Before these changes, if a row of the dataframe was to be truncated, the whole row was removed. Right now only the overflowing tokens will be removed. This is probably an important change that will need to be reverted (implemented in the new API).
- The tokenizer is based on `pd.DataFrame`s. It should be very simple to switch from these to `datasets.Dataset`, which serve the same purpose.

Once this PR is merged, I'll open a PR from `tapas-style` to `nielsrogge/tapas_v3` as explained in https://github.com/huggingface/transformers/pull/8113#issuecomment-725818087

Comments:
Thank you! 

❗ This is a preliminary review, I'm not finished with it. 2 important things for now:

1) I am also testing the Colab demo's with this branch. Currently I'm getting an error when providing `answer_coordinates` and `answer_texts` to the tokenizer: 

SQA: https://colab.research.google.com/drive/1BNxrKkrwpWuE2TthZL5qQlERtcK4ZbIt?usp=sharing
WTQ: https://colab.research.google.com/drive/1K8ZeNQyBqo-A03D8RL8_j34n-Ubggb9U?usp=sharing

Normally, the `label_ids`, `numeric_values` and `numeric_values_scale` should also be padded when I set padding='max_length'. 

2) I've got an updated version of the creation of the numeric values (they are currently not performed correctly) in a branch named `tapas_v3_up_to_date_with_master`. Either you could incorporate these changes in your branch before making a PR, or I make them after the PR is merged (what you like best - the latter is probably easier). 

Great, thanks for your great preliminary review. I've fixed a few of the issues, just pushed a commit. There's a few things you mention that definitely need a deeper look. I can do so in the coming days, but I'll let you finish your review first so that I may batch everything. Thank you!

@LysandreJik I have finished reviewing, I've added more (mostly documentation-related) comments.

The most important thing is that when `label_ids`, `answer_coordinates` and `answer_text` are provided to the tokenizer, an error is currently thrown due to the fact that padding is not working. 

Besides this, the other important things are:
* a correct implementation of the creation of the `prev_label_ids` when a batch of table-question pairs is provided
* a correct implementation of `drop_rows_to_fit` and `cell_trim_length`