Reland "libcore: Remove native calls in FileDescriptor <clinit>"

This reverts commit Ie9fa5a25d5352f214a16e10d5bbbe45da9f3c486.

Original commit message:

Moves cloning of FileDescriptor in, out, and err descriptors
into a ZygoteHook. This avoids the need to run JNI methods
in FileDescriptor.<clinit> and enables native Core Platform
API checking of FileDescriptor descriptor and ownerId fields.

Changes in reland:

Force UnixChannelFactory to fail initialization during AOT
compilation. UnixChannelFactory is on the preloaded-classes-blacklist
and the changes in the original CL unintentionally allowed
it to be initialized. It used to be that FileDescriptor and
UnixChannelFactory initialization failed in the same transaction
due to the FileDescriptor clinit method making native calls (dup(s)).

Bug: 144502743
Bug: 150680645
Test: art/test/run-test --host 001-HelloWorld
Test: art/tools/run-libcore-tests.sh --mode=host --variant=X64
Test: atest -s <serial> -c \
              CtsLibcoreTestCases:libcore.java.io.FileDescriptorTest
Test: atest PreloadCheck
Change-Id: I81e1af1d13ec81b3e51ce1d2f3c202f807d9f9bb
Merged-In: I81e1af1d13ec81b3e51ce1d2f3c202f807d9f9bb
(cherry picked from commit 32ea49e614fc79873148ae974df55b0d8ba15396)
5 files changed