First implementation of WebGL support

This is a first working implementation of webgl.
The CanvasElement got an extra overload of GetContext for attributes (like antialias, etc. for opengl)

All classes in WebGL namespace and the CanvasContextWebGL class are directly parsed from the webgl spec.
see https://www.khronos.org/registry/webgl/specs/latest/webgl.idl