Macro joining Thrift structs.

This is boolean blindness on a grander scale, and I don't think you can fix it with a simple little code change.

Avoiding boolean blindness might mean changing `assertThatInputFieldsContainAllOutputFields`, so that instead of returning a boolean, which forces you to recompute those pairs, it returns a list of input field / output field pairs as evidence. And then you can just map over that list to compute assignments.