Bugfix: copy functions should make deep copies

Copy functions are transfer full but were only copying the container.
Now they copy pointers and ref objects.

This should fix all the issues we were having with the gjs bindings and
allow us to simplify the override code quite a bit.
Use define type with code macro for Con

Using G_DEFINE_TYPE_WITH_PRIVATE requires GLib >= 2.38 which is too new
to support Debian Wheezy. The replacement of G_DEFINE_TYPE_WITH_CODE is
meant to do the same thing, but takes the GLib requirement down at least
several minor versions.
Reduce GLib required version to 2.32