Serialize NewProtocol as unevaluated TypeOperatorType in cache
Synthetic NewProtocol TypeInfos have no module home, so their
Instances can't be looked up by fullname on cache load. Replace
is_new_protocol bool with new_protocol_constructor field that
stores the original TypeOperatorType. When serializing an Instance
of a NewProtocol type, write the constructor instead — it gets
re-evaluated fresh on load.