Constructible types are those for which new is defined.
Often these are GObjects, but it is possible to construct new
(zero-initialized) structures and unions too.
A type holding a GValue with an associated label. It is
parameterized by a phantom type encoding the target type for the
GValue (useful when constructing properties).