Fix bug in gpt2's (from-scratch) special scaled weight initialization 

I randomly noticed a minor bug in the (from-scratch) weight initialization of gpt2, where the same tensor gets re-initialized over and over many times. I don't believe the significantly more common `from_pretrained` is impacted. The original discussion and explanation is here https://github.com/huggingface/transformers/pull/13573#discussion_r906288955 . 

The simplest reproduction is 

```python
from transformers import GPT2Model, GPT2Config
configuration = GPT2Config()
model = GPT2Model(configuration)
```

Then if you insert `print(id(p), name)` inside the if statement you'll see 4 inits of the same tensor, at each layer of the onion, e.g.:

```
139851709684832 c_proj.weight
139851709684832 attn.c_proj.weight
139851709684832 0.attn.c_proj.weight
139851709684832 h.0.attn.c_proj.weight
```

I verified that original code triggers the `if` statement 96 times, while this version triggers it 24 times, which is correct for a 12-layer model. I also ran `pytest tests/models/gpt2/test_modeling_gpt2.py`, without issues. The code is still not super satisfying (e.g. there is still one layer of overwriting present due the init in code block above, it only happens in the right order because of the way `self.apply` iterates depth-first over children, and we're "hard-coding" variable names present in different modules all the way up, but fixing this would be a bit bigger refactor.

cc potential gpt2 reviewers @patrickvonplaten, @LysandreJik and @sgugger, @siddk  from original thread
_The documentation is not available anymore as the PR was closed or merged._<|||||>Coming to this PR a bit late (sorry!) and this is a nice fix! I think @karpathy raises a good point about maybe factoring out a special post-init (probably not for GPT-2 since folks are used to this API, but for future models others may want to hack on) that prevent the extra initialization calls.

FWIW this code does only execute once at the beginning of a from-scratch training run; I could see this becoming a problem if we tried to naively scale to much larger models. I'll see if we can come up with a better fix for other models.

Thanks for the PR @karpathy - super excited to see you contributing to `transformers`!