new and improved GList interfaces.

Firstly, this interfaces allows us to pass around raw GList pointers without bothering to first box them (which should be nice for performance). Secondly, it creates a real GList type which can be instantiated to create (and gc-root) a real GList (which should be nice for usability enhancements, since we can now code the rest of the GList setter API against this)

This took a bit longer than expected, since it turns out that GList isn't a `mutable()` type, but what I'm now starting to call a pointer-type.

On it's own, this doesn't introduce any new functionality. However, it creates a real GList object type, from which we can start building the rest of the GList API.

Fixes #57