Fix marshalling array 2c with transfer != none

Previously, lgi always deleted the container even when transfer mode
dictated otherwise.
Change transfer mode of marshalling of struct fields 2c mode

Previously, we hardcoded transfer=none.  Now we change it to
transfer=full, because typically the target struct takes over the
ownership and it should not depend on the source to be still alive.
It is still not ideal, just heuristics.  In ideal world, we'd glean
transfer from GI, but unfortunately, GI does not provide transfer mode
for fields.

Note that transfer for 2lua is still transfer_none, because we don't
want to steal values from fields when reading them.
Add possibility to create records in alloc mode

.. instead of default inline mode.
Avoid specifying parent when marshalling struct by_ref

Specifying parent only makes sense when structs are marshalled by_value.
Use _refsink on records when transferring ownership of them

When trying to 'steal' ownership from record, attempt to use
_refsink (if defined), so that lgi record proxy keeps ownership too.
Consider additional case for record ctors

Till now, only 'Namespace.record' and 'Namespace.Record.new' were
considered.  GLib.String has 'GLib.string_new', so add
'Namespace.record_new' form too.
Gio: add support for DBus*Info records

Support was a bit tricky because these structs are not exactly
binding-friendly.