Merge pull request #7900 from google/benvanik-hal-map-cleanup Metal, WebGPU, and remoting HAL backends map memory in special ways we haven't encountered yet in CUDA/Vulkan/local CPU execution. Many of the tools and samples we have were written assuming that mapping would always succeed, also requiring that the compiler emit buffers that were mappable. This set of changes is designed to make mapping needed less frequently, allow HAL backends to override transfer behavior, and add utilities for users to make it easier to work with data. There's still some places that are doing extremely shady things (like the e2e matmul tests) but most are now in a form that is compatible with unmappable memory.