Refactor the EGL implementation selection code in EGLWrapper.

Templatize some of the more repetitive initialize-check logic so that
we can just try and create every individual type, see if creation succeeded
and then return true if it did.

InitializeWrapper ensures that the window system gets initialized after
the function returns

Make the constructor for InitializeWrapper explicit.

Bad things will happen if we don't.

Added missing return false

Fix typo in template name

Fix small typographical errors and a missing return