Move GVariant serialization into Contacts.Chunk
Rather than building a big if-else block in the Contacts.Io
namespace,
it's much more interesting to move the GVariant serialization into the
Contacts.Chunk
objects themselves. That allows us to keep the
serialization logic for a specific field in one place and makes sure we
don't forget about any properties as they're not part of that big
if-else block that checks on property name.
This commit also make sure a lot of the functionality here is now unit tested, to make sure we're not accidentally regressing.