Add (sparse) structs to Fact thrift format

Lazy question - is there a "zip" method for maps to get `Map[K, V1] ++ Map[K, V2] => Seq[(K, Option[V1], Option[V2])]`?