[Bart/Memory] don't create lm_head
Author: sshleifer
Pull request: yes

### Summary 

previously we created a `self.lm_head = nn.Linear()` with the exact same weight matrix as the input embeddings, and then skipped `tie_weights`.
This presented 3 problems:
1) 200 MB of extra GPU RAM
2) Can't `tie_weights`
3) Can't `resize_token_embeddings`

This PR alleviates all the concerns by using `lm_logits = F.linear(decoder_outputs[0], self.shared)`. It also adds more aggressive test coverage that `resize_embeddings` is changing the shape of both input and output embeddings.

### Concerns
1) If I recall from an earlier PR, tying the input and output embeddings to a single parameter is unfriendly to torchscript.
However, neither `Bart` before this change nor `T5ForConditionalGeneration`, which uses the `self.lm_head = nn.Linear` technique, pass the common torchscript tests, which suggests that the weight tying in this PR is not removing functionality that existed before it.

2) The failing test here is caused by fact that S3 has `lm_head` in `state_dict`. I will update S3 right before this PR gets merged. 

3) To pass unit tests and use `.generate`, `get_output_embeddings` must return `nn.Linear`. To satisfy this constraint, this PR makes the `nn.Linear` module on the fly when `get_output_embeddings` is called. I think (but am not sure) that this is fine because `resize_token_embeddings` works by resizing the input_embeddings then calling `tie_weights`, and we have stopped skipping `tie_weights`

(Note there is a separate but related issue that `test_common.py::test_resize_embeddings` is shallow, detailed in https://github.com/huggingface/transformers/issues/3378)


Comments:
@LysandreJik 
```python
        if hasattr(output_embeddings, "out_features") and hasattr(input_embeddings, "num_embeddings"):
            output_embeddings.out_features = input_embeddings.num_embeddings
```
was breaking because bart-large-cnn doesn't have a mask token.
I can investigate more deeply if it's interesting to anyone.

# [Codecov](https://codecov.io/gh/huggingface/transformers/pull/3323?src=pr&el=h1) Report
> Merging [#3323](https://codecov.io/gh/huggingface/transformers/pull/3323?src=pr&el=desc) into [master](https://codecov.io/gh/huggingface/transformers/commit/5ad2ea06af898a95744a268332431f050c62a862&el=desc) will **decrease** coverage by `0.00%`.
> The diff coverage is `100.00%`.

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

```diff
@@            Coverage Diff             @@
##           master    #3323      +/-   ##
==========================================
- Coverage   77.83%   77.82%   -0.01%     
==========================================
  Files         100      100              
  Lines       17051    17048       -3     
==========================================
- Hits        13272    13268       -4     
- Misses       3779     3780       +1     
```


| [Impacted Files](https://codecov.io/gh/huggingface/transformers/pull/3323?src=pr&el=tree) | Coverage Δ | |
|---|---|---|
| [src/transformers/modeling\_bart.py](https://codecov.io/gh/huggingface/transformers/pull/3323/diff?src=pr&el=tree#diff-c3JjL3RyYW5zZm9ybWVycy9tb2RlbGluZ19iYXJ0LnB5) | `98.07% <100.00%> (-0.02%)` | :arrow_down: |
| [src/transformers/modeling\_utils.py](https://codecov.io/gh/huggingface/transformers/pull/3323/diff?src=pr&el=tree#diff-c3JjL3RyYW5zZm9ybWVycy9tb2RlbGluZ191dGlscy5weQ==) | `91.73% <0.00%> (-0.14%)` | :arrow_down: |

------

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