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).
It seems fine, keeping the patch size to a minimum. Might want to add comments to the braces around that the indentation isn't changed to keep the patch smaller like it's done in other places.