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