Ownership transfer for callable arguments

Arguments passed to/from C functions are annotated with a "Transfer"
property, signalling whether it is the responsability of the caller or
the callee to deal with memory management. Implement support for these
annotations, freeing memory when appropriate.
Implement interface prerequisites

Interfaces (in gobject parlance) can have prerequisites, that is, every
object implementing a given interface must implement the given
prerequisite interface too.

This is useful in determining which interfaces are necessarily
implemented by GObjects, since we can memory manage objects implementing
the interface by using ordinary g_object_ref/unref.