Run ILLInk on System.Private.CoreLib.dll to remove dead code. (#16876)
We already run ILLInk on corefx assemblies to remove dead code;
this change enables that for System.Private.CoreLib.dll.
The new ILLink.targets file is similar to the one in corefx.
All runtime dependencies were already computed and rooted in an xml file that
was embedded in System.Private.CoreLib.dll. This change adds ILLinkTrim.xml
with a few manual roots. They are also included in the embedded xml.
The dead code found by ILLink that could be removed from sources was already
removed in https://github.com/dotnet/coreclr/pull/16759 The remaining code removed by ILLink
falls into 4 categories:
1. Inlined constants.
2. Private default constructors when there are no other instance constructors.
3. System.Number+DoubleHelper.Sign that needs to stay in the sources for corert mirror.
4. EventListener._EventSourceCreated event methods (the even field is retained).
ILLink also clears initlocals on all methods so I removed the workaround
we had in jitinterface.cpp.