GTypes at runtime + split out GLib.jl

This splits out GLib-only code into it's own namespace and generates the tree of abstract types automatically. It supports detecting types of gobject handles at runtime, one could do:
```
widget = convert(GtkWidgetI, hnd::Ptr{GObjectI})
```
and it would create a wrapper of the correct type (generating a new wrapper type if neccesary)  or reuse the existing wrapper object. I haven't checked if it does ref-counting correctly tho (but I think it does)