Internal virtual node that keeps identity and keys for reconciliation.
@type t() :: %Emerge.Engine.VNode{ attrs: map(), children: [t()], events: %{required(term()) => {pid(), term()}}, id: non_neg_integer(), key: term() | nil, kind: atom(), nearby: [{atom(), t()}] }