When an archive is loaded via an LC_LINKER_OPTION, loading it again will
cause duplicate symbols. This check has been added here. However,
this didn't handle the case where the archive paths are different. For example,
we could be loading a framework and that same framework can be bundled
in another static library. If we are force loading those objects via ObjC, we will
end up with duplicate symbols.
Here, add another check that hashes on the contents and skips loading an
archive's children if the module has already been loaded. This requires making
seen a global property instead of a class property so it can properly track the
different archives being loaded. This also matches ld64's behavior.
While I'm here, make the output test executables be unique so it's easier to debug.