graphicsDriver() function can be called from init() functions,
while isMetalSupported is initialized in another init() functions.
There was a hidden dependency on init functions.
This change avoid this by replacing the init function with
sync.Once.
Updates #886