[XLA:TPU] Support output streaming and refactor TryOutputStreaming into a bottoms-up approach.
[XLA:TPU] Support output streaming and refactor TryOutputStreaming into a bottoms-up approach.

Previously, output streaming took a top-down approach which indiscriminately checks if a MoveToHost custom call would trace down to an output marked with host memory space. This did not work when a dynamic-update-slice existed between the MTH call and the output. This CL fixes this problem by handling output streaming before other MTH calls, while also improving efficiency with the bottoms-up approach so we only trace a single path in the graph.
