Add GType annotations to Cairo structures

To get GValue marshalling we need to ensure that all
Cairo constructors have correct $gtype properties.

https://bugzilla.gnome.org/show_bug.cgi?id=705465
value: implement marshalling of foreign structures to GValue

Previously when setting a GValue we would require a real boxed
structure, but for foreign types the JS code should never see
them, so allow passing a foreign wrapper instead.

https://bugzilla.gnome.org/show_bug.cgi?id=705465