struct Point { double x; double y; string label = "Point"; }
auto pnt = Point( 1.0, 2.0 );
auto merged = DefaultValues.merge( pnt );
assertEqual( merged.x, 1.0 );
assertEqual( merged.y, 2.0 );
assertEqual( merged.colour, "black" );
assertEqual( merged.label, "Point" );
Merge two types by their members.
If it has similar named members, then it uses the second one.
returns a named Tuple (or Aes) with all the members and their values.