Memory management for boxed structs/unions

Add support for allocation/deallocation of boxed structs and unions.
Most wrappers should not leak now, and the ones that may possibly leak
are marked with "XXX" in the generated code.
Support for GObject properties

Add support for setting and getting GObject properties, both with
accessor functions or more conveniently using the
set widget [prop1 := "a", prop2 := 12]
notation from gtk2hs. We also support direct construction of GObjects
using "new" and the same notation for the properties of the object being
constructed, for example:
new Button [buttonLabel := "Hello world"]