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).
If the ``Pre`` event is canceled, should ``Post`` be sent? ``Post`` only really makes sense if ``Pre`` exists.