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.
Some distros (Gentoo) support multiple versions of python3 and mako may
not be built for all of the implementations. Testing for the module
early will make sure meson bails out if the module cannot be
found.
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.