On most system lsof is compiled with warnings enabled.
This causes spam multiple times per one mangohud invocation (up to about 10 times even), like this:
```
lsof: WARNING: can't stat() tracefs file system /sys/kernel/debug/tracing
Output information may be incomplete.
```
Disable warnings explicitly.
When using zink (`MESA_LOADER_DRIVER_OVERRIDE=zink`),
running any app (OpenGL or Vulkan), will trigger running
`glxinfo`. Unsetting of `LD_PRELOAD` is not sufficient,
because if using `zink`, it will load Vulkan, and load Vulkan
implicit layer for Mangohud, using `/usr/share/vulkan/implicit_layer.d/MangoHud.json`,
which will cause it to reenter this function in another process,
causing infinite recursion (until the Vulkan driver finally errors
out with too many VkDevices / contexts created).
I have easily have seen recursion depths of 200+ until this happen,
and sometimes takes up to 2 minutes, with 2000 extra shell and `cut`
processes in the process tree.
Fix this by marking recursion entrance.
This makes glxmark start in less than 1 second, instead
about 60 seconds.
When at it us `glxinfo -B`, which is significantly faster
on zink, yet provides all information we need.
This cleans up the code, as well fixes the bug of not setting
program_name if the MANGOHUD_CONFIG env is specified.
Instead of global variable, that could be not-initialized
use a function to get a program name in logging.
While at it, revamp code and separate things into own functions,
and return by value, and make them easier to use / share code.