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.

I haven't had the opportunity to test this manually, as I don't have the tools to compile on android, rpi or the like at the moment.