CowNodeRef facilities access and modification to trie nodes in multi-version
MPT. It offers read-only access to the original trie node, and creates an
unique owned trie node once there is any modification. The ownership is
maintained centralized in owned_node_set which is passed into many methods
as argument. When CowNodeRef is created from an owned node, the ownership is
transferred into the CowNodeRef object. The visitor of MPT makes sure that
ownership of any trie node is not transferred more than once at the same
time.