tuple_cdr takes nonconst tuple
serialization/deserialization works with unique_ptr (requires move semantics); added test for round trip