Use the right allocator for memory

Typical GObject programs can use three different allocators: the one
provided by Haskell/glibc (malloc), the g_malloc allocator from GLib,
and the g_slice allocator in GLib. One should be careful that memory
allocated with each of these allocators is freed with the corresponding
free function (free, g_free or g_slice_free), otherwise crashes can
occur.

Also clean up GI.Utils.* as part of the process.