(PUP-1619) Accept missing struct keys if type for key is optional
A hash with key bound to nil/undef or missing key and the
struct type accepts nil/undef should be treated as matching.
Without this fix, the hash must has nil/undef bound to keys witout
value.