For execute_sharded_on_local_devices, the overload that takes PyBuffers should take precedence during overload resolution.
For execute_sharded_on_local_devices, the overload that takes PyBuffers should take precedence during overload resolution.

PyBuffer is still the default types used and it is assumed in some places in python frontend. It will be unexpected and cause errors later when an empty arg list is passed and the overload that takes PyShardedBuffer is chosen.

This change also removes __getitem__ from PyShardedBuffer to avoid implicit conversion from PyShardedBuffer to List[PyBuffer::object], and adds implicit conversion from List[PyBuffer::object] to PyShardedBuffer.

PiperOrigin-RevId: 472811325

google/jax,google/jax,google/jax,google/jax