Use String instead of [Char]

Makes hlint happier
Set the proper gtype for GObject and boxed props

When setting properties of type GObject or boxed, use the proper gtype
when building the GValue, instead of the generic G_TYPE_OBJECT or
G_TYPE_BOXED one.
Support for sized Structs and Unions

If the size of the Struct or Union is known, this implies that we should
(generally) allocate the given structure ourselves before calling a
function that consumes these values. Do this properly, and fix handling
of out values of these types too.