[AutoDiff] improve symbol linkage (#28582)
Changed the linkage and serialization of witnesses, derivative functions, and closures to match the design.
Made deserialized witnesses from other modules not get emitted into the current module IR, by setting their linkage to public_external, and teaching IRGen not to emit public_external witnesses. (Fixes TF-1025).
Added diagnostic for calling private derivatives from serialized functions (Fixes TF-690).