Better error reporting the castTo fails
Polymorphic lenses for GObject properties

Add some accesory functions of the form "_property" that allow for
setting any GObject property named "property". The GObject class does
not need to be specified explicitly. This means that now one can write

> set button [_label := "Click here"]

and

> set label [_label := "Info text"]

and things will work nicely. The resulting expressions are still compile
time checked for making sure that the object does have the property in
question, and that it is readable/writable. So, for example, the
following will give a compile time error

> set window [_type := WindowTypeToplevel]

since the "type" property of GtkWindows is ConstructOnly, and

> get window _child

will also fail to compile since the "child" property of a GtkContainer
is WriteOnly.

In order to use these polymorphic lenses one needs to

> import GI.GtkLenses

or similarly for any other module of interest.

There are a couple of downsides:

+ If there is an error, the error message given by GHC can be somewhat
scary. It is helpful in those case to switch to the non-polymorphic
version, since the errors are simpler. So _child -> containerChild, etc.

+ It requires a bunch of GHC extensions, the most recent one being
ConstraintKinds. Any GHC version above 7.4 should do. Other Haskell
compilers may not support all the necessary extensions.