This is similar to the -alias CLI option, but it gives finer-grained
control in that it allows the aliased symbols to be treated as private
externs.
While working on this, I realized that our -alias handling did not
cover the cases where the aliased symbol is a common or dylib symbol,
nor the case where we have an undefined that gets treated specially and
converted to a defined later on. My N_INDR handling neglects this too
for now; I've added checks and TODO messages for these.
N_INDR symbols cropped up as part of our attempt to link swift-stdlib.
I very mildly prefer not using continue to break out of just one level of nesting, but happy to change it back if anyone prefers the original