Add `BlenderbotTokenizerFast`
# What does this PR do?

This PR add the fast (rust) implementation of `BlenderbotTokenizer`.

Fixes #13634 


## Before submitting
- [x] Did you read the [contributor guideline](https://github.com/huggingface/transformers/blob/master/CONTRIBUTING.md#start-contributing-pull-requests),
      Pull Request section?
- [x] Was this discussed/approved via a Github issue or the [forum](https://discuss.huggingface.co/)? Please add a link
      to it if that's the case.
- [x] Did you make sure to update the documentation with your changes? Here are the
      [documentation guidelines](https://github.com/huggingface/transformers/tree/master/docs), and
      [here are tips on formatting docstrings](https://github.com/huggingface/transformers/tree/master/docs#writing-source-documentation).
- [x] Did you write any new necessary tests?


## Who can review?

@LysandreJik 

Anyone in the community is free to review the PR :)



Let me ping @Narsil if he ever has some leads to fix the failed pipeline tests. :slightly_smiling_face: <|||||>The fix is here: https://github.com/Narsil/transformers/commit/605725f24aa516fa64f42df95d394dc7e7c770d1

Not sure it's the best fix so I will describe a bit more the issue.

Blenderbot implements for AutoModelForSeq2SeqLM (the real way to use it) and `AutoModelForCausalLM` (I don't think it's really used in practice, but it's implemented in the lib).

The pipeline tests every model that implements its supported architecture so `BlenderbotForCausalLM` are used. BUT the test config for pipelines is taken from the test modeler, which implements (understandably) the encoder/decoder config (with `encoder_no_repeat_ngram_size=3`). But when the tests is tried with a decoder-only `BlenderbotForCausalLM` then it fails.

`test_pipeline_common` can have a very specific override as this behavior should be very marginal (implementing both) within the lib and also very consistent (CausalLM = decoder only, and `encoder_no_repeat_ngram` doesn't make any sense for decoder-only) <|||||>Something might have been changed since last time, since the embeddings are now an issue.
Suggesting a diff to override only the config used for pipelines tests on blenderbot.

```
index 33d506492..9e04ec89d 100644
--- a/tests/test_modeling_blenderbot.py
+++ b/tests/test_modeling_blenderbot.py
@@ -137,6 +137,11 @@ class BlenderbotModelTester:
             pad_token_id=self.pad_token_id,
         )
 
+    def get_pipeline_config(self):
+        config = self.get_config()
+        config.max_position_embeddings = 100
+        return config
+
     def prepare_config_and_inputs_for_common(self):
         config, inputs_dict = self.prepare_config_and_inputs()
         return config, inputs_dict
```
(By default max_embeddings are 20 long which is not enough for some pipelines tests)<|||||>@Narsil Thank you very much for your help! :) It looks like everything works now.<|||||>Hey, I opened PRs to add `tokenizer.json` to the repos:

* [facebook/blenderbot-400M-distill](https://huggingface.co/facebook/blenderbot-400M-distill/discussions/3)
* [facebook/blenderbot-3B](https://huggingface.co/facebook/blenderbot-3B/discussions/3)
* [facebook/blenderbot-1B-distill](https://huggingface.co/facebook/blenderbot-1B-distill/discussions/3)

While the conversions work, `tokenizer.json` files are useful for us because they allow loading directly using the tokenizers Rust bindings, so if those can be merged it would be appreciated :)