Render 3D Event

This PR features Render3DEvent, both Pre and Post. It's situated wrapping the renderWorld call.

Pre is capable of canceling the 3D world render entirely. It's essential for special render passes and setting up pre-render variables, e.g. 3D shaders or stencil bits. The cancelation of this event is useful if you want to replace 3D render entirely, but keep the GUI.

Post has two uses: Destruction of values set up in Pre, and application of post-processing the rendered scene (e.g. reading out the front buffer or applying 2D shaders).
Not imo. If any mods have constructed values in Pre, they need to deconstruct them reliably too. If anything, you could split the event into several others (WantsToRender, WillRender, DidRender, PostRender)... I personally felt like that was a bit overkill though.