Add MaskedData to protocol.thrift
Add MaskedData to protocol.thrift

Summary:
Add MaskedProtocolData to protocol.thrift
```
// Represents serialized data of unmasked fields.
union MaskedData {
  1: id.ValueId full;
  2: map<id.FieldId, MaskedData> fields;
  3: map<id.ValueId, MaskedData> values;
}

struct EncodedValue {
  1: type.BaseType wireType;
  2: standard.ByteBuffer data;
}

// We cannot have adapted type in a list, so this is the walkaround.
struct ValueStruct {
  1: Value value;
}

// MaskedData uses ValueId to get encodedValues and map keys from the lists.
struct MaskedProtocolData {
  1: type.Protocol protocol;
  2: MaskedData data;
  3: list<EncodedValue> values;
  4: list<ValueStruct> keys;
}
```

Reviewed By: Mizuchi

Differential Revision: D38730919

fbshipit-source-id: 1328c7c5c49d35b4199b452fadc1b20d36e944eb

facebook/fbthrift,facebook/fbthrift,facebook/fbthrift,facebook/fbthrift,facebook/fbthrift,facebook/fbthrift,facebook/fbthrift,facebook/fbthrift,facebook/fbthrift