A pure data representation of a computation step in the DAG.
@type id() :: atom() | String.t()
@type node_port() :: atom() | binary()
@type t() :: t(term())
@type t(type) :: %Oi.Topology.Graph.Node{ container: type, extra: map(), id: id(), inputs: [node_port()], options: keyword(), outputs: [node_port()] }