Better support for GBoxed in cl-gtk2

I've rewritten some inner workings of cl-gtk2-gobject related to the use of GBoxed structures. It should ease some aspects of creating bindings for libraries that are based on GObject.

What this new type mapping brings for GBoxed support in cl-gtk2:

  • Type safety. The Lisp code is isolated from pointer manipulation, memory and lifetime management of GBoxed instances;
  • A more intuitive implementation of callbacks (and also implementations for GObject methods) that accept as arguments or return values of GBoxed types;
  • Transparent usage of structs in definitions of foreign functions;
  • General improvements in ergonomics of GBoxed.

The code became simpler and more correct.

Now come the other parts of Gtk+ bindings, including the bindings for Gtk+, Gdk, etc.