Add recursive variant node structure and corresponding value/list/dict sub types.

Sample executable verifies that a node can successfully be built from strings, vectors and maps
and that it can be serialized with standard containers stream operators.