Implement GTypeClass and GTypeInterface arguments

It is common in the GObject world to have non trivial functionality
exposed as GObjectClass/GTypeClass methods, to be used from
class_init. One example is the GtkWidget template system.
This commit implements marshalling of GType structures as
JS classes (constructors), going through the associated GType.

Note that this commit breaks the testGObjectClass.js test

https://bugzilla.gnome.org/show_bug.cgi?id=700347
Stop exposing GType structures as such

Having methods exposed in GType structures like they were boxeds
forces one to use a horrible hack through prototype to call them.
Instead, have those methods installed on the JS classes like
static methods. A hack is still required to call them on subclasses,
but it's smaller.

Note that this commit fixes the testGObjectClass.js test broken in
f3c9b6e33b9d316349911a881a5f7ff5d4c102c4

https://bugzilla.gnome.org/show_bug.cgi?id=700347
object: add a custom hook to run at instance_init

This allows to run code that requires to be inside GTypeInstance
init(), such as gtk_widget_init_template()

https://bugzilla.gnome.org/show_bug.cgi?id=700347
Gtk: add override to handle GtkWidget templates

Add a new override module for Gtk, which provides a custom metaclass
to all GtkWidget derived classes.
This metaclass accepts an additional parameter, Template, which is either
a resource:/// URI or a bare XML string, and takes care of calling
gtk_widget_class_set_template() and gtk_widget_init_template()

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