Fix BatchEncoding.word_to_tokens for removed tokens
Fixes https://github.com/huggingface/tokenizers/issues/343

Copied from issue on `tokenizers` repo:

> I'm working with pre-tokenized data (UD-Treebanks) for a sequence-tagging task, since I don't want to inflate the importance of a training example based on the number of word-pieces the token gets split into, I need to map the labels to only the first word-piece of a token.
>
> To achieve this, I was iterating over the words in the original sentence as taken from the treebank and used the word_to_tokens method with the offset of the word in the sentence to get the corresponding token span. If words simply vanish from the sentence, then at first the offsets become invalid and at the final word of the sequence an exception is raised because there's no offset for disappearing words in the sequence. 

This notebook demontrates the issue: 

https://colab.research.google.com/drive/139mVXMQ7jZBBoTpgkribgVpOu6W1u8e9?usp=sharing

~~~Py
import transformers
import torch
tokenizer = transformers.AutoTokenizer.from_pretrained("bert-base-multilingual-cased", use_fast=True)
batch = [["Test", "\xad", "test"]]
encoded_batch = tokenizer.batch_encode_plus(
    batch,
    padding=True,
    is_pretokenized=True,
    return_tensors='pt',
    truncation=True)
first_pieces = torch.zeros_like(encoded_batch.attention_mask, dtype=torch.bool)

for row, sentence in enumerate(batch):
    for col, token in enumerate(sentence):
        idx = encoded_batch.word_to_tokens(row, col)[0] # this method raises the exception
        first_pieces[row, idx] = True
~~~