[2.0] TF 2.0 support
Author: thomwolf
Pull request: yes

Currently converted models:
- [x] BERT
- [x] GPT-2
- [x] XLNet
- [x] XLM
- [x] Transformer-XL
- [x] GPT
- [x] RoBERTa
- [x] DistilBert

With TF 2.0 Keras imperative interface and Eager, the workflow and models are suprisingly similar:
```python
import numpy
import torch
import tensorflow as tf
from pytorch_transformers import BertModel, TFBertModel, BertTokenizer

tokenizer = BertTokenizer.from_pretrained('bert-base-uncased')
pytorch_model = BertModel.from_pretrained('bert-base-uncased')
tf_model = TFBertModel.from_pretrained('bert-base-uncased')

text = "[CLS] Who was Jim Henson ? Jim [MASK] was a puppeteer [SEP]"
tokens = tokenizer.encode(text)

pytorch_inputs = torch.tensor([tokens])
tf_inputs = tf.constant([tokens])

with torch.no_grad():
    pytorch_outputs = pytorch_model(pytorch_inputs)

tf_output = tf_model(tf_inputs, training=False)

numpy.amax(numpy.abs(pytorch_outputs[0].numpy() - tf_output[0].numpy()))
# >>> 2.861023e-06 => we are good,  a few 1e-6 is the expected difference
# between TF and PT arising from internals computation ops
```

The convention is to use the same name for classes as the original PyTorch classes but prefixed with `TF`.

If you want to install and use this development branch, you should install from the `tf2` branch like this:
- install TF 2.0: `pip install tensorflow==2.0.0-rc0`
- install pytorch-transformers from the `tf2` branch: `pip install https://github.com/huggingface/pytorch-transformers/archive/tf2.zip`


TO-DO / not forget:
- [ ] check weights initialization
- [x] add weights tying
- [x] add example with losses using `model.compile` /`model.fit`
- [ ] take care of having the two possible gelu implementations for Bert
- [ ] untangle Transfo-XL tokenizer from `torch.load` and `torch.save`
- [x] test that all dropout modules are desactivated when training=False (check determinism)
- [ ] clean up our FP16 support (for PyTorch as well) with (i) an adjustment of masking values and (ii) an adjustment of LayerNorm epsilon (add an attribute in configuration files).

Comments:
# [Codecov](https://codecov.io/gh/huggingface/transformers/pull/1203?src=pr&el=h1) Report
> Merging [#1203](https://codecov.io/gh/huggingface/transformers/pull/1203?src=pr&el=desc) into [master](https://codecov.io/gh/huggingface/transformers/commit/4a233e5b2c18f0cf508f6b917cd1e02954764699?src=pr&el=desc) will **increase** coverage by `4.27%`.
> The diff coverage is `89.06%`.

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

```diff
@@            Coverage Diff             @@
##           master    #1203      +/-   ##
==========================================
+ Coverage   80.45%   84.73%   +4.27%     
==========================================
  Files          57       84      +27     
  Lines        8090    12573    +4483     
==========================================
+ Hits         6509    10654    +4145     
- Misses       1581     1919     +338
```


| [Impacted Files](https://codecov.io/gh/huggingface/transformers/pull/1203?src=pr&el=tree) | Coverage Δ | |
|---|---|---|
| [transformers/tokenization\_auto.py](https://codecov.io/gh/huggingface/transformers/pull/1203/diff?src=pr&el=tree#diff-dHJhbnNmb3JtZXJzL3Rva2VuaXphdGlvbl9hdXRvLnB5) | `70.96% <ø> (ø)` | |
| [transformers/modeling\_roberta.py](https://codecov.io/gh/huggingface/transformers/pull/1203/diff?src=pr&el=tree#diff-dHJhbnNmb3JtZXJzL21vZGVsaW5nX3JvYmVydGEucHk=) | `70.8% <ø> (ø)` | |
| [transformers/modeling\_auto.py](https://codecov.io/gh/huggingface/transformers/pull/1203/diff?src=pr&el=tree#diff-dHJhbnNmb3JtZXJzL21vZGVsaW5nX2F1dG8ucHk=) | `53.94% <ø> (ø)` | |
| [transformers/configuration\_distilbert.py](https://codecov.io/gh/huggingface/transformers/pull/1203/diff?src=pr&el=tree#diff-dHJhbnNmb3JtZXJzL2NvbmZpZ3VyYXRpb25fZGlzdGlsYmVydC5weQ==) | `89.74% <ø> (ø)` | |
| [transformers/configuration\_openai.py](https://codecov.io/gh/huggingface/transformers/pull/1203/diff?src=pr&el=tree#diff-dHJhbnNmb3JtZXJzL2NvbmZpZ3VyYXRpb25fb3BlbmFpLnB5) | `89.13% <ø> (ø)` | |
| [transformers/modeling\_transfo\_xl\_utilities.py](https://codecov.io/gh/huggingface/transformers/pull/1203/diff?src=pr&el=tree#diff-dHJhbnNmb3JtZXJzL21vZGVsaW5nX3RyYW5zZm9feGxfdXRpbGl0aWVzLnB5) | `53.89% <ø> (ø)` | |
| [transformers/modeling\_openai.py](https://codecov.io/gh/huggingface/transformers/pull/1203/diff?src=pr&el=tree#diff-dHJhbnNmb3JtZXJzL21vZGVsaW5nX29wZW5haS5weQ==) | `80.4% <ø> (ø)` | |
| [transformers/optimization.py](https://codecov.io/gh/huggingface/transformers/pull/1203/diff?src=pr&el=tree#diff-dHJhbnNmb3JtZXJzL29wdGltaXphdGlvbi5weQ==) | `96.62% <ø> (ø)` | |
| [transformers/configuration\_xlm.py](https://codecov.io/gh/huggingface/transformers/pull/1203/diff?src=pr&el=tree#diff-dHJhbnNmb3JtZXJzL2NvbmZpZ3VyYXRpb25feGxtLnB5) | `93.33% <ø> (ø)` | |
| [transformers/tests/conftest.py](https://codecov.io/gh/huggingface/transformers/pull/1203/diff?src=pr&el=tree#diff-dHJhbnNmb3JtZXJzL3Rlc3RzL2NvbmZ0ZXN0LnB5) | `90% <ø> (ø)` | |
| ... and [113 more](https://codecov.io/gh/huggingface/transformers/pull/1203/diff?src=pr&el=tree-more) | |

------

[Continue to review full report at Codecov](https://codecov.io/gh/huggingface/transformers/pull/1203?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/1203?src=pr&el=footer). Last update [4a233e5...80bf868](https://codecov.io/gh/huggingface/transformers/pull/1203?src=pr&el=lastupdated). Read the [comment docs](https://docs.codecov.io/docs/pull-request-comments).


Ok big merge