Add new overload of `GraphToFunctionDef()` that can consume the graph.
Add new overload of `GraphToFunctionDef()` that can consume the graph.

Previously, we copied all of the node data from the input subgraph to the `FunctionDef`. This change reduces the memory footprint of multi-device function instantiation by (where possible) `std::move`-ing the bulk of the node data from the input graph to newly created `NodeDef` members of the resulting `FunctionDef` protocol buffer.

This change should reduce (but not completely eliminate) the need for setting `TF_PFLR_PARALLEL_INSTANTIATE_THRESHOLD` in jobs with large multi-device function graphs.
