CLI: detect and store weights as float16
# What does this PR do?

Updates the `pt-to-tf` CLI to detect and store weights as float16. Battle-tested with OPT.
The docs for this PR live [here](https://moon-ci-docs.huggingface.co/docs/transformers/pr_17737). All of your documentation changes will be reflected on that endpoint.<|||||>> Will TensorFlow automatically load stored FP16 weights in FP32 like PyTorch does?

No, if we inspect the variables after loading, they are FP16. However, as soon as we pass some input, we can see that the outputs of the internal computations are FP32, despite the weights being FP16.

The model error (vs PT) is exactly the same, before and after adding these lines :)

The documentation is not clear, but I believe `tf.keras.backend.set_floatx` sets the precision of the internal computations. For instance, if we don't reset to float32 (the default) after storing as float16, the error is much much larger (~1e3 times larger).<|||||>Mmmm, in this case I would avoid storing the weights in FP16 on the Hub before adding something in `from_pretrained` that will convert them back to FP32 like it's done for PyTorch.<|||||>> Mmmm, in this case I would avoid storing the weights in FP16 on the Hub before adding something in from_pretrained that will convert them back to FP32 like it's done for PyTorch.

👍 I can give it a go (and leave this PR open meanwhile)