Tokenize with offsets
Similar purpose to https://github.com/huggingface/transformers/pull/1274 (which I also used for most of the testing) but different approach.
It keeps track of token offsets by trying to progressively tokenize the text character by character, and consume matching tokens along the way.
It returns just the start of a span. Tests were added for ALBERT, CTRL and T5.
I think this implementation is more generic and simpler to understand, and the results are very good.
# [Codecov](https://codecov.io/gh/huggingface/transformers/pull/2178?src=pr&el=h1) Report
> Merging [#2178](https://codecov.io/gh/huggingface/transformers/pull/2178?src=pr&el=desc) into [master](https://codecov.io/gh/huggingface/transformers/commit/26e04e51ef0774e681784d7be900c1119d46c52e?src=pr&el=desc) will **decrease** coverage by `<.01%`.
> The diff coverage is `66.66%`.

[![Impacted file tree graph](https://codecov.io/gh/huggingface/transformers/pull/2178/graphs/tree.svg?width=650&token=9qOlN6Hb1c&height=150&src=pr)](https://codecov.io/gh/huggingface/transformers/pull/2178?src=pr&el=tree)

```diff
@@            Coverage Diff             @@
##           master    #2178      +/-   ##
==========================================
- Coverage   73.73%   73.73%   -0.01%     
==========================================
  Files          87       87              
  Lines       14921    14919       -2     
==========================================
- Hits        11002    11000       -2     
  Misses       3919     3919
```


| [Impacted Files](https://codecov.io/gh/huggingface/transformers/pull/2178?src=pr&el=tree) | Coverage Δ | |
|---|---|---|
| [src/transformers/modeling\_utils.py](https://codecov.io/gh/huggingface/transformers/pull/2178/diff?src=pr&el=tree#diff-c3JjL3RyYW5zZm9ybWVycy9tb2RlbGluZ191dGlscy5weQ==) | `63.91% <0%> (ø)` | :arrow_up: |
| [src/transformers/tokenization\_utils.py](https://codecov.io/gh/huggingface/transformers/pull/2178/diff?src=pr&el=tree#diff-c3JjL3RyYW5zZm9ybWVycy90b2tlbml6YXRpb25fdXRpbHMucHk=) | `92.35% <100%> (-0.03%)` | :arrow_down: |

------

[Continue to review full report at Codecov](https://codecov.io/gh/huggingface/transformers/pull/2178?src=pr&el=continue).
> **Legend** - [Click here to learn more](https://docs.codecov.io/docs/codecov-delta)
> `Δ = absolute <relative> (impact)`, `ø = not affected`, `? = missing data`
> Powered by [Codecov](https://codecov.io/gh/huggingface/transformers/pull/2178?src=pr&el=footer). Last update [26e04e5...7870a49](https://codecov.io/gh/huggingface/transformers/pull/2178?src=pr&el=lastupdated). Read the [comment docs](https://docs.codecov.io/docs/pull-request-comments).
<|||||>@thomwolf 
This pull request is ready for review<|||||>This issue has been automatically marked as stale because it has not had recent activity. It will be closed if no further activity occurs. Thank you for your contributions.
