make safe_set use type info which is already there in all of the deserialization loops instead of looking it up every time from the class._type_info.

this also caused _safe_set to miss attributes from parent classes.
add cto test for args from parent class.