Use the internal `__libc_dlopen_mode` symbol instead of `dlmopen`
Both, `dlmopen` and `dlopen` are only available when the debugeee
application links against libdl. When that is not the case, one
could not inject heaptrack at runtime.
By instead using the libc.so internal `__libc_dlopen_mode` function,
we get rid of this limitation and we can also inject into applications
that only link against libc.so but not libdl.
This trick was found in the linux-inject project:
https://github.com/gaffe23/linux-inject