The encoding of the CDR format is different for different data types. For example, structs are encoded differently than maps. Since Python does not provide native equivalents to all CDR types, we need to some type conversion to the type specified in the `msg` files.
This commit starts implementing such a system through a new `TypeInfo` enum, which we will generate from the ROS2 msg files at runtime. For serialization, we now use a custom `TypedValue` type that calls the correct `serialize_x` functions of serde.