Add "labels" functionality for all TF Causal LM and Masked LM models
# 🚀 Feature request

Currently, it is not possible to calculate the loss of a CLM or MLM model using TF:

```python
from transformers import TFBertForMaskedLM, BertTokenizerFast

model = TFBertForMaskedLM.from_pretrained("bert-base-uncased")
tok = BertTokenizerFast.from_pretrained("bert-base-uncased")

input_ids = tok("This is a test string.").input_ids
loss = model(input_ids, labels=input_ids)[0]  # This is currently not possible
```
Currently the `call(...)` function does not accept a `labels` input and does not return the 
loss. This should be implemented similar to how it was done for `BertForSequenceClassification`:
https://github.com/huggingface/transformers/blob/393b8dc09a97197df1937a7e86c0c6b4ce69c7e9/src/transformers/modeling_tf_bert.py#L918

All CLM and MLM TF models should be updated to accept `labels` as an input and return the corresponding loss.

## Motivation

1. This allows to use TFTrainer for CLM and MLM models.
2. This aligns TF with PT API

## Your contribution

Starting from 29.06/30.06 I want to implement all these features (with some help from @jplu if possible ;-)) 

Pinging @LysandreJik @julien-c @sgugger for notification.

Awesome! I'm in!!! <|||||>Yes please! Happy to help if you need it.