caos: Switch updates of linked sets from delete/add to merge
caos: Switch updates of linked sets from delete/add to merge

Previously any update of a linked collection would trigger a complete
replacement of that collection via remove/add cycle.  Such behaviour is
inefficient and semantically dubious, as adding an existing item to a
set should not change the set, whereas the delete/add cycle does by
dropping unspecified link properties.

From now on, the linked nodes that are present in both the old and the
new set are merged, i.e. their link properties are merged and the link
object is preserved.

Example:

    >>> a.linked_set = {xvalue(x, property=1), y}
    >>> print(a.linked_set)
    {xvalue(x, property=1), y}

    >>> a.linked_set = {xvalue(x, property2=10), z}
    >>> print(a.linked_set)
    {xvalue(x, property=1, property2=20), z}

edgedb/edgedb,edgedb/edgedb,edgedb/edgedb