Make BigBird model compatiable to fp16 dtype.
Author: xuzhao9
Pull request: yes

# What does this PR do?

Currently, the BigBird model doesn't support fp16 data type with a `.half()` call.
For example, the following code snippet:

```python
from transformers import *
import torch

if __name__ == "__main__":
  device = 'cuda'
  config = BigBirdConfig(attention_type="block_sparse",)
  model = AutoModelForMaskedLM.from_config(config).to(device)
  eval_context = torch.randint(0, config.vocab_size, (1, 4096)).to(device)
  example_inputs = {'input_ids': eval_context, }
  model = model.half()
  model(**example_inputs)
```
will fail with the following error message:

```
Traceback (most recent call last):
  File "1.py", line 11, in <module>
    model(**example_inputs)
  File "/home/xzhao9/data/miniconda3/envs/py38/lib/python3.8/site-packages/torch/nn/modules/module.py", line 1110, in _call_impl
    return forward_call(*input, **kwargs)
  File "/home/xzhao9/data/miniconda3/envs/py38/lib/python3.8/site-packages/transformers/models/big_bird/modeling_big_bird.py", line 2351, in forward
    outputs = self.bert(
  File "/home/xzhao9/data/miniconda3/envs/py38/lib/python3.8/site-packages/torch/nn/modules/module.py", line 1110, in _call_impl
    return forward_call(*input, **kwargs)
  File "/home/xzhao9/data/miniconda3/envs/py38/lib/python3.8/site-packages/transformers/models/big_bird/modeling_big_bird.py", line 2081, in forward
    encoder_outputs = self.encoder(
  File "/home/xzhao9/data/miniconda3/envs/py38/lib/python3.8/site-packages/torch/nn/modules/module.py", line 1110, in _call_impl
    return forward_call(*input, **kwargs)
  File "/home/xzhao9/data/miniconda3/envs/py38/lib/python3.8/site-packages/transformers/models/big_bird/modeling_big_bird.py", line 1615, in forward
    layer_outputs = layer_module(
  File "/home/xzhao9/data/miniconda3/envs/py38/lib/python3.8/site-packages/torch/nn/modules/module.py", line 1110, in _call_impl
    return forward_call(*input, **kwargs)
  File "/home/xzhao9/data/miniconda3/envs/py38/lib/python3.8/site-packages/transformers/models/big_bird/modeling_big_bird.py", line 1467, in forward
    self_attention_outputs = self.attention(
  File "/home/xzhao9/data/miniconda3/envs/py38/lib/python3.8/site-packages/torch/nn/modules/module.py", line 1110, in _call_impl
    return forward_call(*input, **kwargs)
  File "/home/xzhao9/data/miniconda3/envs/py38/lib/python3.8/site-packages/transformers/models/big_bird/modeling_big_bird.py", line 1385, in forward
    attention_output = self.output(self_outputs[0], hidden_states)
  File "/home/xzhao9/data/miniconda3/envs/py38/lib/python3.8/site-packages/torch/nn/modules/module.py", line 1110, in _call_impl
    return forward_call(*input, **kwargs)
  File "/home/xzhao9/data/miniconda3/envs/py38/lib/python3.8/site-packages/transformers/models/big_bird/modeling_big_bird.py", line 1300, in forward
    hidden_states = self.dense(hidden_states)
  File "/home/xzhao9/data/miniconda3/envs/py38/lib/python3.8/site-packages/torch/nn/modules/module.py", line 1110, in _call_impl
    return forward_call(*input, **kwargs)
  File "/home/xzhao9/data/miniconda3/envs/py38/lib/python3.8/site-packages/torch/nn/modules/linear.py", line 103, in forward
    return F.linear(input, self.weight, self.bias)
RuntimeError: expected scalar type Float but found Half
```

It runs fine after merging this PR.

Other huggingface models, such as `hf_Bert`, doesn't have this problem. For example, `hf_Bert` support fp16 with [this line](https://github.com/huggingface/transformers/blob/master/src/transformers/models/bert/modeling_bert.py#L314).



Comments:
_The documentation is not available anymore as the PR was closed or merged._

Can I get a review, @patrickvonplaten ?

Addressed comments and rebased on master branch. Fix CI errors. Pending another review from @patrickvonplaten 

Awesome thanks!