Rework graphical library to use different graphical APIs as full-fledged structures.
Instead of utilizing system with function pointers in global scope that get set separately for each API it organizes these methods under separate interface classes based on a common interface.
Also includes a few other quality-of-life code improvements.