TransfoXLLMHead doesn't shift labels internally when called for loss
# 🐛 Bug

When called with labels to get the language-modeling loss, `TransfoXLLMHead.forward` computes the NLLLoss of the outputs directly against the labels, rather than against the shifted labels like the documentation indicates (and like the other models). This makes it impossible to train with `lm_labels = input_ids` as suggested by the doc.

## Information

Model I am using: TransformerXL

Language I am using the model on: English

The problem arises when using:
* [x] my own modified scripts:

The task I am working on is:
* [x] my own task or dataset:

## To reproduce

```
import torch
from transformers import TransfoXLConfig, TransfoXLLMHeadModel

config = TransfoXLConfig()
lm = TransfoXLLMHeadModel(config)
test_tensor = torch.LongTensor([[0]])
print(lm(input_ids=test_tensor, labels=test_tensor)[0])
```

A 1x1 loss tensor is returned.

## Expected behavior

As there is only 1 token in the input tensor, no loss should be returned: there's no next label to compare the output against. For example, running this with GPT2

```
import torch
from transformers import GPT2Config, GPT2LMHeadModel

config = GPT2Config()
lm = GPT2LMHeadModel(config)
test_tensor = torch.LongTensor([[0]])
print(lm(input_ids=test_tensor, labels=test_tensor)[0])
```

returns `tensor(nan, grad_fn=<NllLossBackward>)`.

## Environment info
     
- `transformers` version: 2.8.0
- Platform: Linux-5.3.0-45-generic-x86_64-with-Ubuntu-18.04-bionic
- Python version: 3.6.9
- PyTorch version (GPU?): 1.4.0 (True)
- Tensorflow version (GPU?): not installed (NA)
- Using GPU in script?: False
- Using distributed or parallel set-up in script?: False

