This commit cleans up offscreen rendering support in VTK. This includes
1. It makes EGL support independent of onscreen GL
support. It's now possible to enable EGL and GLX in same build of
VTK, for example, so long as the two use shared GL-dispatch
mechanism. Previously, EGL could not be enabled together with GLX
(i.e. `VTK_USE_X` set to ON). These changes allow for that
2. `VTK_USE_OFFSCREEN_EGL` is replaced by `VTK_OPENGL_HAS_EGL`.
This is consistent with `VTK_OPENGL_HAS_OSMESA` flag. And also
in similar vein to changes to `FindOpenGL.cmake` where EGL
becomes a component of `find_package(OpenGL)`.
3. `VTK_EGL_DEVICE_INDEX` has been replaced by
`VTK_DEFAULT_EGL_DEVICE_INDEX` since it only affect the default
value, and doesn't preclude users from manually specifying the
4. `VTK_USE_OFFSCREEN` has been replaced by
`VTK_DEFAULT_RENDER_WINDOW_OFFSCREEN`, since similar to `3`
this option was only intended to affect the default value.
5. Simplified `FindEGL.cmake`. Apps don't need to link against
`gldispatch` library and hence removed it and created an
imported target to simplify use.
6. For all changes to CMake variables, we put out `DEPRECATION`
messages if old variables are used.
7. When `VTK_USE_X` and `VTK_OPENGL_HAS_EGL` or
`VTK_OPENGL_HAS_OSMESA` in ON, following things happen:
i. The object-factory simply returns the X-based (or
onscreen) render window i.e. `vtkXOpenGLRenderWindow`.
ii. To create one of the offscreen render windows, one can
manually instantiate them e.g. by explicitly
`vtkXOpenGLRenderWindow` has implementation to swap to
OSMesa if `SetUseOffscreen(true)` is called.
iii. As soon any off-screen features are enabled, `glew`
uses the offscreen library APIs to get OpenGL function pointers
irrespective of how the active context was initialized.