[SPMD][Virtual Device]All tensors should be in SPMD:0 C++ device (#5284)
* Move all tensors to SPMD:0 C++ device under spmd context
* fix load shards
* fix test_mark_sharding_2d by not creating placeholder for virtual device
* fix the waitdeviceop for spmd case
* Fix test_shard_hashing
* fix spmd device casting issue
* remove hacks in test_xla_virtual_device.py
* add test for new virtual device usage
* fix review comments
* fix IsTpuDevice
* linter