PR #10315: Add move assignment operator to Shape and ProgramShape
PR #10315: Add move assignment operator to Shape and ProgramShape

Imported from GitHub PR https://github.com/openxla/xla/pull/10315

The attempt to use `Shape` move assignment operator is found in [ShapeUtil::MakeProgramShape](https://github.com/openxla/xla/blob/main/xla/shape_util.cc#L278)
```
Shape result) {
  ...
  ProgramShape program_shape;
   ...
  *program_shape.mutable_result() = std::move(result);
  ...
```
Because `Shape` move assignment operator is currently not declared, C++ uses copy assignment operator which copies all Shape internal fields from src Shape (`result`) to dest Shape (`program_shape.result_`).
Copybara import of the project:

--
e5ac9c58ee6f9008e19ec345ae1d05a43fe166fc by Alexander Pivovarov <pivovaa@amazon.com>:

Add move assn op to Shape and ProgramShape

Merging this change closes #10315

FUTURE_COPYBARA_INTEGRATE_REVIEW=https://github.com/openxla/xla/pull/10315 from apivovarov:shape_move_ctor e5ac9c58ee6f9008e19ec345ae1d05a43fe166fc
