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"]