[Mosaic] Make `tpu.relayout` an explicit operation, merge in existing behavior, stop calling relayout() in apply.
This change should reduce complexity and make it easier to see what happened in a graph.
Note - there are still cases where certain relayout() calls are not ops yet, those will be migrated in the future. Specifically, see the note in the CL around force_relayout.
Added helper methods to generate full like vectors.
Followup for subsequent CLs: Simplify Relayout rule in future CLs, maybe break up into smaller sub relayouts with nice names.
Followup for subsequent CLs: Unify transpose in here
PiperOrigin-RevId: 758240646