Support for GVariants

GVariants are a fundamental type of GLib which is particularly useful
when dealing with DBus. Add support for easy marshaling of these types
from/to Haskell.
Haddock does not like documentation in GADTs

See http://trac.haskell.org/haddock/ticket/43