Set target platform identification variables like `APPLE` and `LINUX`
as soon as the target system is identified. This makes them available
during toolchain and binutils selection.
Fixes: #23333
Serenity's LibDl was merged into LibC to simplify the build and port
infrastructure [1]. Set `CMAKE_DL_LIBS` to the empty string to match
what other platforms do. Update the platform module added by
commit 45ca894164 (SerenityOS: Add Platform module, 2022-01-02,
v3.25.0-rc1~635^2).
[1] https://github.com/SerenityOS/serenity/pull/14854
Issue: #23589
Add an initial Platform module for SerenityOS [1]. This module is a mix
of the platform module currently used to build the Serenity Kernel and
Userspace applications and libraries, and the platform module included
in the CMake Port [2] which still has some work to do on the system
before its other patches could be considered for upstream.
As such, the platform module is currently only useful when used with a
suitably patched GCC or LLVM cross-compiler toolchain.
[1] https://github.com/SerenityOS/serenity
[2] https://github.com/SerenityOS/serenity/tree/master/Ports/cmake/patches
Issue: #23589