Changed how GL contexts/window are initialized.

This tries more than just one time to get a context, it trys the default
context first, which is either going to be the highest or the lowest
version. In the case of the low version it tries again. glGetString is
core at even the lowest versions, so we test the version with that.