Handle marshalling tuple variant types

The only container types handled are list and dict. This adds support for tuples
as well (aka DBus structs), which are rather simple to introspect.