1. Combine sharding candidates from both operands 0 and 1 of a gather ops to obtain better candidates for the latter. This mirrors the handling of gather ops in sharding_propagation.cc. Some changes to sharding_propagation to make a couple functions visible for usage from auto-sharding.
1. Combine sharding candidates from both operands 0 and 1 of a gather ops to obtain better candidates for the latter. This mirrors the handling of gather ops in sharding_propagation.cc. Some changes to sharding_propagation to make a couple functions visible for usage from auto-sharding.
2. Remove an unnecessary function declaration from auto_sharding.h
