Thin3d - the thinnest wrapper around D3D9 and GL around

Add Thin3d, slip it underneath all our UI drawing code so that it can now run on either OpenGL or Direct3D.

Incomplete, does not handle scissor rects 100% (doesn't account for the y flip) etc. Suboptimal shader uniform handling. But kinda works.
Seems like we can get a vendor id but have to translate it to a string ourselves.  Probably we can either just use the numbers or have a few special numbers we translate to strings.  Seems like we can't get renderer, but I'm not sure?

Would be useful for reporting.

-[Unknown]