marshaller: do not use dangling pointer
When a boxed value is translated to a Python object, the boxed data was not copied and the Python object used the original GValue'd data pointer. When the actual GValue argument is cleaned, the data is deallocated, leaving a dangling pointer in the Python object. This commit copies the structure rather than using its original storage. Fixes GNOME/pygobject#119