This change moves the __xray_CustomEvent trampoline implementation from
being written in X86 assembly to C++. This allows us to leverage the
toolchain's capability to define entries for the global object table
(GOT) for globals and procedure linkage table (PLT), instead of
attempting to write those routines down in assembly.
We also take the chance to build a dynamic version of the XRay library
to prepare for enabling the use of the XRay runtime as a dynamic
library. This will require a bit more changes down the line to have a
fully supported dynamic XRay library.
We'll start adding tests to make sure that we can actually use the XRay
library in a shared library in succeeding patches.