Rework polymorphic attribute accessors

The previous design failed in the case that one did a "get" for a
_property with a setter value that was not a concrete type, but a
typeclass. (I.e., basically every property that took values on a GObject
or interface.) GHC could not fix the type of the _property accessor, and
gave a type error.

Rework these routines so now this works as it should.