Thank you, Travis CI, for reminding me that one cannot disable a header
with inclusion guards if it doesn't exist.
(cherry picked from commit 537ea4ccf1)
This removes all dependencies from the GLFW test programs on the Vulkan
SDK.
It also removes support for linking the GLFW shared library (dynamic
library, DLL) against the Vulkan loader static library.
Replaced the GLFW_SHOULD_CLOSE window parameter with the
glfwWindowShouldClose and glfwSetWindowShouldClose functions, allowing
the setting of the close flag from any point in the program.
The cached error code cannot be made per-thread unless it required
glfwInit (due to lack of __thread on OS X), which would be confusing and
partially defeats the purpose of it.
Beginners would use the generic error string facility instead of the
error callback and then be confused by its nondescript messages.
Storing the provided error code from within the error callback, whether
globally or per-thread, requires just a few lines of code and hands
control to the user without compromising thread safety.
Functions registered with atexit are called from the thread calling exit.
glfwTerminate should only be called from the main thread. Mistakes should be
explicit.