Various improvements & fixes:
rt.sceneloader:
- Workaround const correctness of SDLang.Tag in SdlValueWrapper.

rt.geomotry:
- Fix bug in identity comparison in CsgOp.intersect(..).
- Move sort function from rt.geometry to util.array and change implementation to use shell sort.

rt.renderer:
- Mark Renderer.raytrace(..) and Renderer.pathtrace(..) as public.
- Save the result of the last tracing in a field inside Renderer if compiled in debug mode and if the ray has the debug flag set. Currently only raytrace_impl(..) saves it.
- Add a @nogc opAssign to TraceResult, because the default one was not infered as such (why?!).

rt.intersectable.IntersectionData:
- Add opCmp (used for sorting inside rt.geometry.CsgOp.intersect(..).
- Make opAssign pure nothrow @safe.

gui.rtdemo:
- Implement async rays shooting on mouse click if in debug mode.
- Make the renderer a field (instead of a local var in RTDemo.render()).
- Make the rendered field shared (so multiple threads can read/write it).
rt.sceneloader:
- Workaround const correctness of SDLang.Tag in SdlValueWrapper.

rt.geomotry:
- Fix bug in identity comparison in CsgOp.intersect(..).
- Move sort function from rt.geometry to util.array and change implementation to use shell sort.

rt.renderer:
- Mark Renderer.raytrace(..) and Renderer.pathtrace(..) as public.
- Save the result of the last tracing in a field inside Renderer if compiled in debug mode and if the ray has the debug flag set. Currently only raytrace_impl(..) saves it.
- Add a @nogc opAssign to TraceResult, because the default one was not infered as such (why?!).

rt.intersectable.IntersectionData:
- Add opCmp (used for sorting inside rt.geometry.CsgOp.intersect(..).
- Make opAssign pure nothrow @safe.

gui.rtdemo:
- Implement async rays shooting on mouse click if in debug mode.
- Make the renderer a field (instead of a local var in RTDemo.render()).
- Make the rendered field shared (so multiple threads can read/write it).

gui.guibase:
- Fix window close button being ignored.

rt.imported types:
- Move Ray struct to rt.ray
- Make all functions pure nothrow @safe @nogc

rt.ray:
- Change RayFlags enum member names to be more idiomatic and add a None member (equal to 0).
- Add properties for checking if a ray is a debug one.
- Move vector related functions to rt.imported types.

- Correct imports in: rt.transform, rt.texture, rt.shader, rt.node, rt.light, rt.intersectable, rt.geometry, rt.camera.
- Fix RayFlags member names in: rt.scene, rt.shader, rt.renderer

- Make lecture5 default scene file.
gui.guibase:
- Fix window close button being ignored.

rt.imported types:
- Move Ray struct to rt.ray
- Make all functions pure nothrow @safe @nogc

rt.ray:
- Change RayFlags enum member names to be more idiomatic and add a None member (equal to 0).
- Add properties for checking if a ray is a debug one.
- Move vector related functions to rt.imported types.

- Correct imports in: rt.transform, rt.texture, rt.shader, rt.node, rt.light, rt.intersectable, rt.geometry, rt.camera.
- Fix RayFlags member names in: rt.scene, rt.shader, rt.renderer

- Make lecture5 default scene file.