make Write typeclass contravariant
create specialized HListWrite trait
serialization of traversables
deserialization of arbitrary collections through CanBuildFrom