Window: Remove warnings for Bind/Unbind

Binding a close window is equivalent to unbinding a window.
No need to prevent user from doing this.
Window: Close can be called on "closed" windows

This is so the main thread can close a window after a secondary thread
terminates once it realizes its window should close. Should-close and
closed are synonymous now, so that we don't have to put up a new wrapper
method called "ShouldClose" which threads will use explicitly.
Utility: Bind shared context before deiniting shader lib

The recent window changes exposed a memory leak. Since no window is
bound when Deinit is called, we need to bind the shared context before
freeing the shader library resources.

Also, the utility module and init/deinit procedures are really messy.
Shader library initialization should go to the internal graphics module,
as should the shared context. Also more error-checking needs to be done
so the shader library isn't deinitialized with no active context, in
the case where the shared context was not created.
test/thread: Now used to test thread windows.