Add (sparse) structs to Fact thrift format

> The type should be List[(K, These[V1, V2])] though - don't want two None's.

Good suggestion. I've added `Maps.outerJoin` which I think is quite nice/handy. Not sure where I should stick it.