gen_node_key
closes: #5770 closes: #5769 also, include node ID in the output (#5769) and modify NodeKey to use value semantics (it makes perfect sense for NodeKey to not be a pointer).