Added WitchD2D

Forgot about beginrender and endrender calls from before. They have now
been moved to the driver too, so the engine should not call any module
functions anymore. We'll see how this paradigm works out.
Direct2D Works.

Well that was hella easy. Need to fix render target.
Now we have both 2D and 3D GraphicsContext

So this works well enough to be able to use different contexts with
different windows, but right now we are unable to add multiple contexts
to the same window. The semantics should pretty much be that you can add
D2D context to unused window. You can add D3D context to unused window.
When you want to combine them you SHOULD be able to add them in any
order...and you should only be able to have one of each attached to any
given window.
Just name refactoring

The hard part will have to come tomorrow