Rebase ESM PR and update all file formats
This is a rebase and rework of the ESM PR at #13662. The old PR predates the `master -> main` rename and the conversion from `.rst` to `.mdx` documentation. As such, a straightforward rebase was very messy, so I copied the PR to a new branch and fixed the various file formats to be compatible with modern `transformers`. We're hoping to move quite quickly from here to get this merged.

Progress checklist:

- [X] Rebase
- [X] Convert documentation format
- [X] Convert imports in `__init__.py` and `modeling_auto.py`
- [x] Address comments on the old PR
- [x] Complete any `TODOs` left in the code
- [x] Figure out what the `encoder_keep_prob` hack in the conversion script is for
- [x] Use correct ESM classes in the conversion script
- [x] Checkout Meta's ESM repo and double-check tests to make sure outputs are still equivalent
- [x] Test that model output is still equivalent when there are `<mask>` tokens in the input
- [x] Test that model output is still equivalent when inputs are padded
- [x] Remove the unused `token_type_ids` from the code
- [x] Fix the copies now we're not using `token_type_ids`
- [x] Add support for ESM-2 `RotaryEmbedding`
- [x] Find out why the original repo has a loss of precision in `RotaryEmbedding` and whether we need the hack
- [x] Get the last few tests to pass
- [x] Make sure slow tests pass locally
- [x] Confirm uploaded model names with the Meta team
- [x] Figure out if we need custom heads/losses/classes for ESM-1v, and/or if that should be pushed to another PR

Models to convert/check:
- [x] ESM-1b (esm1b_t33_650M_UR50S)
- [x] ESM-1v (esm1v_t33_650M_UR90S_[1-5])

Models to convert/check if we include ESM-2 as well:
- [x] esm2_t6_8M_UR50D
- [x] esm2_t12_35M_UR50D
- [x] esm2_t30_150M_UR50D
- [x] esm2_t33_650M_UR50D
- [x] esm2_t36_3B_UR50D
- [x] esm2_t48_15B_UR50D

What we're **not** converting: MSA models (because HF doesn't have the MSA retrieval code yet) and ESM-1 (because it's been superceded by ESM-1b and we don't expect much usage).

Various people have expressed interest in this, so I'm going to ping them here so they're aware of this!
cc: @sgugger @patrickvonplaten @liujas000 @gianhiltbrunner @franzigeiger
_The documentation is not available anymore as the PR was closed or merged._<|||||>cc @sgugger @LysandreJik this should now be ready for review! ESM-1b and ESM-2 models are both supported and the discrepancy between our output and the output from the original model is now 2e-5 or less.

I'm still chasing down one last question with the Meta team, but that only affects a very small part of the code.<|||||>(Note that tests will fail until I finish converting and uploading checkpoints)<|||||>@LysandreJik Everything renamed ESM -> Esm!<|||||>Thank you! Good to merge for me