A symbol $ld$previous$/Another$1.2.3$1$3.0$14.0$_xxx$ means
"pretend symbol _xxx is in dylib /Another with version 1.2.3
if the deployment target is between 3.0 and 14.0 and we're
targeting platform 1 (ie macOS)".
This means dylibs can now inject synthetic dylibs into the link, so
DylibFile needs to grow a 3rd constructor.
The only other interesting thing is that such an injected dylib
counts as a use of the original dylib. This patch gets this mostly
right (if _only_ $ld$previous symbols are used from a dylib,
we don't add a dep on the dylib itself, matching ld64), but one case
where we don't match ld64 yet is that ld64 even omits the original
dylib when linking it with -needed-l. Lld currently still adds a load
command for the original dylib in that case. (That's for a future
patch.)
Fixes #56074.
Moving this to an initializer is mostly unrelated, just didn't want to duplicate it in the 3rd ctor. I could land this change as a tiny standalone commit if you want.