TF safetensors reduced mem usage
When we load safetensors files in TF, the entire safetensors state dict is materialized on GPU alongside the randomly initialized weights. This inflates our memory usage during loading a lot, up to about 2X - 2.5X the amount we actually need.

This PR grabs tensors iteratively from the underlying safetensors archives and assigns them. ~It's working for TF-formatted safetensors archives right now, and I'll add torch-format support next.~ Now supports PT and TF formatted archives! Load times still seem very quick for me locally, so I don't think this negatively impacts anything!

Fixes #24393 
_The documentation is not available anymore as the PR was closed or merged._<|||||>This looks good in my testing! cc @Narsil for review and @amyeroberts for core maintainer review to save Sylvain from having to read code while he's distracted by the hallucinatory dental anaesthetic goblins 

To explain one detail: In general, all TF ops can take NumPy inputs. Often the "idiomatic" way to write TF code is to do preprocessing/once-off stuff in NumPy and just pass the result to TF. Since Safetensors have very efficient Numpy loading, I generally open them in `"np"` format and let TF handle any necessary conversions.

The one exception is when loading a PyTorch state dict archive. The reason here is that PyTorch weights often need to be transposed to load them into TF, and NumPy transposes on CPU are much slower than TF transposes on GPU. Model loading was several seconds slower when I passed `"np"` format archives to the PyTorch state dict crossloading function, but with GPU transposes this PR has almost no impact on performance, while hugely reducing peak memory usage.<|||||>Yeah, actually, I thought about it a little more - using `np` is idiomatic for TF, but it's a bit messy if the PyTorch crossloading uses `tf` for fast GPU transposes and the others use `np`, especially when it doesn't really matter. I'll use `tf` globally for consistency!<|||||>Just ran the slow tests for a few models that load safetensor checkpoints and this still seems good<|||||>Finished slow testing - performance and memory usage look good!<|||||>Everything looks good at this point - any objections to merging?