A typed codec that reads and writes Vala values directly.
Use it with Deser.create_codec_for_map and Deser.create_codec_for_array so nested collection types are explicit rather than inferred from a boxed GType. Workers call decode and encode directly for roots, while object properties use the inherited decode_value and encode_value methods. For example, Int32Codec.decode returns an int; Int32Codec.pack puts that int in a NullableValue so the object mapper can assign an int property.