[`MPT`] Add MosaicML's `MPT` model to transformers
# What does this PR do?

Fixes #23174

First questions:
- [ ] Should we keep the nested config for attention and init configs? Pros: backward, Cons: not what we usually do, can't modify on the fly, harder to maintain
- [ ] Should we keep flash attention or go with better transformers 
- [ ] Do we want 100% backward compatibility 

# TODOS :
- [ ] Properly setup the config 
- [ ] Write a mapping to go from original mosaicml config to new config (since attribute names have to be changed)
- [ ] Design tests, clone the repo to `hf-internal-testing` since at the end we intend to remove the code from the hub. Test attention patterns , flash and trition
- [x] One model on file. 

# Notes : 
Tokenizer is the same as GPTNeoX, only has a fast version, adds sentinel tokens. We don't really need a custom config for this and should just always have these in the tokenizer config.

_The documentation is not available anymore as the PR was closed or merged._<|||||>@sgugger we think the PR is ready for a review 🙏  ! The logits tests pass with tolerance `1e-12` between the model on the Hub and ours. There is nothing to do on the Hub as the current code is perfectly backward compatible with their config and weights.

```python
import torch
from transformers import AutoModelForCausalLM, MptForCausalLM, AutoTokenizer, MptForCausalLM

model_id = "mosaicml/mpt-7b"
tok = AutoTokenizer.from_pretrained(model_id)

model = MptForCausalLM.from_pretrained(model_id, torch_dtype=torch.bfloat16, device_map={"":1}, load_in_4bit=True)
model_trust_remote_code = AutoModelForCausalLM.from_pretrained(model_id, torch_dtype=torch.bfloat16, device_map={"":0}, load_in_4bit=True, trust_remote_code=True)

outputs_transformers = model(torch.LongTensor([[1, 2, 3, 4, 5]]).to(1), output_hidden_states=True)
outputs_trust_remote_code = model_trust_remote_code(torch.LongTensor([[1, 2, 3, 4, 5]]).to(0))

print(torch.allclose(outputs_transformers.logits, outputs_trust_remote_code.logits.to(1), atol=1e-12, rtol=1e-12))
>>> True
```

Currently we don't support advanced features such as triton attention or custom init, hence we advise super users that want to use this feature to load the trust_remote_code model if they want to benefit from these features

cc also @Narsil and @OlivierDehaene for TGI - I think things should work smoothly on your side<|||||>> cc also @Narsil and @OlivierDehaene for TGI - I think things should work smoothly on your side

MPT is already supported actually. (No triton, nor flash either, because of alibi)