Introduces WeakExternal linkage type to JITLink that looks up external definition before trying to use definition in current linkgraph.
In COFF, there is a notion of weak external symbol. The exact behaviour is defined as follwing in the spec: "If a definition of external symbol is linked, then an external reference to the symbol is resolved normally. If a definition of external symbol is not linked, then all references to the weak external for external symbol refer to stub symbol instead."
An aspect where it's inaccurate to use current Weak jitlink linkage type is that it does not eagerly looks for external definition, but everyone defines it blindly and the one defined earlier is used. So, in the testcase added in this patch, it will not look for definition in strong_def.yaml, thus linkgraph of strong_def.yaml will not even be emitted. WeakExternal linkage type gives a priority to external definition which solves this issue.