caos: Simplify selector serialization
caos: Simplify selector serialization

Previous implementation of selector path serialization was unnecessarily
complicated with set indirection: all operands and operation results
were always sets.  This proved to be hard to maintain and reason about,
so drop the indirection.

Additionally, the representation of path unserialization in js/jp
frontends was fairly sloppy, as node vectors were represented by pure js
Arrays (containing two elements), which were very easy to confuse with
sets.  Fix this by introducing an explicit Vector object incapsulating
the path target and the final pointer leading to it.

edgedb/edgedb,edgedb/edgedb,edgedb/edgedb