(PUP-4000) Make optional Struct value imply optional key
This commit changes the TypeCalculator so that a Struct with optional
values becomes assignable from a Struct where the keys corresponding
to those values are missing. It also changes the instance_of logic so
that a Hash missing such keys is considered an instance of the struct.