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).
Splitting it into that many is just stupid.
Just add a boolean 'vanilla rendered' or something.
I'll have to lookat this in context but the lack of documentation on anything is annoying, as well as your import issue. 

Also I could of sworn e already had all the hooks you needed for pre and post rendering.
What else is need. Where in the pipeline is this compared to the other hooks and vanilla rendering.
What extra functionality does this give that you don't already have elseware?