Detection system

Is there any particular reason why the detection system is as it is? I mean the fact that all DetectX() functions are forward declared, and called in OpenRGB.cpp:DetectRGBControllers(). In my opinion this is not a scalable system. For one alternative, using the fact that the constructors of static objects run before main() would be more convenient.

Any thoughts? If there is agreement on how it could be replaced, I would gladly do it.

Edited by Barnabás Pőcze