Add bitsandbytes support for gpt2 models
# What does this PR do?

The current bitsandbytes integration only supports models using [nn.Linear](https://pytorch.org/docs/stable/generated/torch.nn.Linear.html#torch.nn.Linear), which excludes gpt2 and other models that instead use [Conv1D](https://github.com/huggingface/transformers/blob/68c92981ff2b804979d2e6107eeefe298d1e5183/src/transformers/pytorch_utils.py#L85). This PR enables loading/serialization of these models, as well as gpt2-xl tests for int8 and 4bit.

This is achieved by transposing the weight matrices of Conv1D layers before quantization.

Note: Following the suggestion in the bnb tests to use models with >1b params only leaves [gpt2-xl](https://huggingface.co/gpt2-xl), which is unfortunately a 6.4GB download due to being stored in float32.

## Before submitting
- [ ] This PR fixes a typo or improves the docs (you can dismiss the other checks if that's the case).
- [x] Did you read the [contributor guideline](https://github.com/huggingface/transformers/blob/main/CONTRIBUTING.md#start-contributing-pull-requests),
      Pull Request section?
- [ ] Was this discussed/approved via a Github issue or the [forum](https://discuss.huggingface.co/)? Please add a link
      to it if that's the case.
- [ ] Did you make sure to update the documentation with your changes? Here are the
      [documentation guidelines](https://github.com/huggingface/transformers/tree/main/docs), and
      [here are tips on formatting docstrings](https://github.com/huggingface/transformers/tree/main/docs#writing-source-documentation).
- [x] Did you write any new necessary tests?


## Who can review?

@younesbelkada, @TimDettmers
_The documentation is not available anymore as the PR was closed or merged._<|||||>> FYI, on my side I get these failing tests, I believe there might be a small difference between our envs. We can always update the expected sentence later in case they fail on the daily CI (which probably will be the case). Happy also to add the missing test in a follow up PR.
> <img alt="Screenshot 2023-06-27 at 16 08 55" width="1314" src="https://user-images.githubusercontent.com/49240599/249179643-418abf8c-3408-49b6-8212-5e4e75e5f284.png">

Aha, it's been stable for me so far, but I can see that happening. If it's any help I'm running this on an RTX 4090 and `torch==2.1.0.dev20230603+cu121`.

> Also one test is failing for 4bit:
> 
> ```shell
> FAILED tests/bnb/test_4bit.py::Bnb4BitGPT2Test::test_memory_footprint - AttributeError: 'GPT2MLP' object has no attribute 'dense_4h_to_h'
> ```
> 
> Could quickly address a fix? 🙏 After that we should be ready to merge

Nice catch! I have a fix in mind that should also remove most of the int8 test code I added, so I'll get that in asap.