function: Free transfer-full in arguments when function fails

If we fail to marshal the arguments and throw an exception before
calling a gobject-introspected function, or the function itself throws
a GError exception, then we can assume that any transfer of ownership
of a (transfer full) or (transfer container) in-argument was not
completed.

This means that we have to free any storage that would otherwise have
had its ownership transferred to the function.
26 jobs for 221-param-unknown in 10 minutes and 12 seconds (queued for 5 seconds)
Status Job ID Name Coverage
  Source Check
passed #247357
cppcheck

00:01:55

passed #247358
cpplint

00:02:35

passed #247359
eslint

00:01:59

passed #247356
fedora

00:05:06

 
  Test
passed #247363
no_graphics

00:04:35

passed #247364
no_profiler

00:04:54

passed #247365
no_readline

00:04:54

passed #247360
sanitizer_gcc

00:05:06

passed #247361
with_logging

00:05:00

passed #247362
with_systemtap

00:04:55

 
  Manual
manual #247379
allowed to fail manual
armv8
manual #247366
allowed to fail manual
codequality
manual #247367
allowed to fail manual
code_statistics
manual #247381
allowed to fail manual
coverage
manual #247369
allowed to fail manual
fedora_gcc
manual #247375
allowed to fail manual
flatpak
manual #247370
allowed to fail manual
installed_tests
manual #247373
allowed to fail manual
lts
manual #247380
allowed to fail manual
ppc64le
manual #247368
allowed to fail manual
sanitizer_clang
manual #247372
allowed to fail manual
ubuntu_clang
manual #247371
allowed to fail manual
ubuntu_gcc
manual #247374
allowed to fail manual
valgrind
manual #247378
allowed to fail manual
zeal_11
manual #247376
allowed to fail manual
zeal_2
manual #247377
allowed to fail manual
zeal_4