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
11 jobs for issue119 in 44 minutes and 50 seconds (queued for 292 minutes and 52 seconds)