Implementing Drop for DOM types is being forbidden. This change moves
the shader deletion logic into a separate DroppableWebGLShader struct,
allowing WebGLShader to comply with this restriction while still
ensuring GPU resources are released when the object is finalized.
Testing: Covered by existing WebGL tests.
Fixes: #26488
Signed-off-by: Domenico Rizzo <domenico.rizzo@gmail.com>