Changed hud from "fake" projection to 3d surface

Changed hud from "fake" projection, where it was simply drawing 2d hud
shifted left/right by yaw and shifted up/down by pitch, with rotation
correction, to a actual 3d surface, using matricies to correctly orient
and position the hud "surface" to a virtual position in front of the
player.

Fixed some bugs which caused inaccurate rotation when looking up or
down. Fixed another bug with vr_driftcorrection.

New cvar:

vr_hud_depth. How close the hud should be in front of you. 0 =
infinitely far away.  50 = default, medium distance. 100 = closer