Properly recognize dtrace symbols and convert call sites to nop.
While this change allows to compile a program with SDT providers,
the generated binary does not contain the dof section required to enable the defined probes at runtime.
Design note:
Dtrace user probes are encoded as undefined function calls in the generated objets. When reading a Mach-O object, we mark all dtrace calls as 'canBeNullAtBuildTime' so the resolver does not trigger 'unresolved symbol' error. Darwin does not support that flag, so using it on dtrace symbol should be OK.
Then, for each branch relocation that target a dtrace call, we generate a special reference, dtraceProbe or dtraceIsEnabled.
The dtraceProbe and dtraceIsEnabled relocations are used to replace the dtrace call by nop when generating the final executable.
We don't need this in the public interface for ArchHandler. All the "kind" values are private to each ArchHandler subclass.