[IFRT] Wrap RemapPlan::mappings with shared_ptr
[IFRT] Wrap RemapPlan::mappings with shared_ptr

`xla::ifrt::RemapPlan`'s `mappings` is frequently reused across different
`xla::ifrt::RemapPlan`. It can be costly to keep a copy of `mappings` for each
plan if the mappings is not trivially small.

This change wraps `mappings` with `std::shared_ptr` so that it can be shared
more cheaply across multiple plans.
