SRZ: add function for indirect to/from str serialization via interediate type

Useful for generating wrappers in order to serialize an abstract class
and derived class using the same instantiated code, usually for abstract
class. I.e. *_inidrect() functions perform intermediate conversion
to/from specified (abstract) type.

This is needed to address an issue with boost::serialization when
serializing abstract class A and derived class D (via pointers)
lead to creating _different_ archive content even when A* ptr really
points to an instance of D. When saving via ptr to abstract base class,
name (GUID) of derived class is included in archive string, while direct
saving of D produce no such information. Thus, string dumped via ptr to
base class cannot be loaded by specific code for derived class (stream
error) and vice versa.