Add CamemBERT model for TF2
Author: jplu
Pull request: yes

Hello,

Here another contribution :) I have implemented the CamemBERT model handling for Tensorflow 2.

I now have the model on my disk, should I send it to you? Or will you generate it from your side? Or should I upload it on my account? As you wish :)

Best.

Julien.

Comments:
Humm I don't understand why this test is failing I haven't touched to DistilBERT...

```=================================== FAILURES ===================================
______________ TFDistilBertModelTest.test_pt_tf_model_equivalence ______________
[gw2] linux -- Python 3.5.9 /usr/local/bin/python

self = <tests.test_modeling_tf_distilbert.TFDistilBertModelTest testMethod=test_pt_tf_model_equivalence>

    def test_pt_tf_model_equivalence(self):
        if not is_torch_available():
            return
    
        import torch
        import transformers
    
        config, inputs_dict = self.model_tester.prepare_config_and_inputs_for_common()
    
        for model_class in self.all_model_classes:
            pt_model_class_name = model_class.__name__[2:]  # Skip the "TF" at the beggining
            pt_model_class = getattr(transformers, pt_model_class_name)
    
            config.output_hidden_states = True
            tf_model = model_class(config)
            pt_model = pt_model_class(config)
    
            # Check we can load pt model in tf and vice-versa with model => model functions
            tf_model = transformers.load_pytorch_model_in_tf2_model(tf_model, pt_model, tf_inputs=inputs_dict)
            pt_model = transformers.load_tf2_model_in_pytorch_model(pt_model, tf_model)
    
            # Check predictions on first output (logits/hidden-states) are close enought given low-level computational differences
            pt_model.eval()
            pt_inputs_dict = dict(
                (name, torch.from_numpy(key.numpy()).to(torch.long)) for name, key in inputs_dict.items()
            )
            with torch.no_grad():
                pto = pt_model(**pt_inputs_dict)
            tfo = tf_model(inputs_dict, training=False)
            tf_hidden_states = tfo[0].numpy()
            pt_hidden_states = pto[0].numpy()
            tf_hidden_states[np.isnan(tf_hidden_states)] = 0
            pt_hidden_states[np.isnan(pt_hidden_states)] = 0
            max_diff = np.amax(np.abs(tf_hidden_states - pt_hidden_states))
            # Debug info (remove when fixed)
            if max_diff >= 2e-2:
                print("===")
                print(model_class)
                print(config)
                print(inputs_dict)
                print(pt_inputs_dict)
>           self.assertLessEqual(max_diff, 2e-2)
E           AssertionError: 2.3126152 not less than or equal to 0.02

tests/test_modeling_tf_common.py:125: AssertionError```

@jplu It's an unrelated Heisenbug. 

@thomwolf For some reason the debug prints were not printed :(

Ok I thought it was coming from me ahah

@thomwolf I let you check, do not hesitate to ping me if I have to do something from my side.

@jplu Here too, I took the liberty of updating the documentation directly on your fork. Thank you very much for your contributions, this is great!

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

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

```diff
@@            Coverage Diff             @@
##           master    #2437      +/-   ##
==========================================
+ Coverage   74.34%   74.59%   +0.25%     
==========================================
  Files          88       89       +1     
  Lines       14945    14971      +26     
==========================================
+ Hits        11111    11168      +57     
+ Misses       3834     3803      -31
```


| [Impacted Files](https://codecov.io/gh/huggingface/transformers/pull/2437?src=pr&el=tree) | Coverage Δ | |
|---|---|---|
| [src/transformers/\_\_init\_\_.py](https://codecov.io/gh/huggingface/transformers/pull/2437/diff?src=pr&el=tree#diff-c3JjL3RyYW5zZm9ybWVycy9fX2luaXRfXy5weQ==) | `98.83% <100%> (+0.02%)` | :arrow_up: |
| [src/transformers/modeling\_tf\_camembert.py](https://codecov.io/gh/huggingface/transformers/pull/2437/diff?src=pr&el=tree#diff-c3JjL3RyYW5zZm9ybWVycy9tb2RlbGluZ190Zl9jYW1lbWJlcnQucHk=) | `100% <100%> (ø)` | |
| [src/transformers/modeling\_tf\_utils.py](https://codecov.io/gh/huggingface/transformers/pull/2437/diff?src=pr&el=tree#diff-c3JjL3RyYW5zZm9ybWVycy9tb2RlbGluZ190Zl91dGlscy5weQ==) | `92.82% <0%> (+0.51%)` | :arrow_up: |
| [src/transformers/tokenization\_utils.py](https://codecov.io/gh/huggingface/transformers/pull/2437/diff?src=pr&el=tree#diff-c3JjL3RyYW5zZm9ybWVycy90b2tlbml6YXRpb25fdXRpbHMucHk=) | `85.69% <0%> (+0.81%)` | :arrow_up: |
| [src/transformers/pipelines.py](https://codecov.io/gh/huggingface/transformers/pull/2437/diff?src=pr&el=tree#diff-c3JjL3RyYW5zZm9ybWVycy9waXBlbGluZXMucHk=) | `68.46% <0%> (+2.27%)` | :arrow_up: |
| [src/transformers/modeling\_tf\_auto.py](https://codecov.io/gh/huggingface/transformers/pull/2437/diff?src=pr&el=tree#diff-c3JjL3RyYW5zZm9ybWVycy9tb2RlbGluZ190Zl9hdXRvLnB5) | `69.6% <0%> (+16.66%)` | :arrow_up: |

------

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