Allow setting fields on nested messages with set_fields in ros_packet_codec
The set_fields option, when passed to decode_payload, allows using metadata to set fields on the decoded message(s). Previously, it didn't work for nested message fields, and it would crash if you attempted to set a field that didn't exist. Now, nested fields are supported, and if you pass fields that don't exist, it just logs a message.