These were creating dangerous interdependencies. It is better to do explicit conversions when needed.
As an added plus, this means that zstring.h no longer depends on name.h which was very annoying.
This may look as a workaround, it is not.
nosave cvars are meant to be used as a storage for statistical data that doesn't
affect gameplay. That's why this data isn't saved to the savefile in the first
place. Therefore, there is no point in sending this data over network. It would
have no meaning on machines other than local.
The old method using a single string with a backslash as separator is unable to handle anything with actual backslashes in the data.
It now uses a JSON object with each CVAR being a separate key.