libgui|GLState: Specifying a subregion for drawing

Setting the "active rectangle" of GLState will cause viewport and
scissor to be transformed into that rectangle as if the active
rectangle covered the entire render target area.

The purpose is to allow rendering the entire view into a subregion
of the window while using viewport/scissor defined for the full
render target.

Currently the active rectangle affects *all* states in the stack.
It would be better to incorporate it into the GLState attributes.
LegacyWidget: Allow moving the top left corner away from (0, 0)

The scissors/viewports are set according to the actual top left
corner instead of a hardcoded (0, 0).

This is partially working.
ClientWindow|GuiWidget: Testing side-by-side left/right viewports

The GLState active rectangle is now used for drawing two copies of
the same frame.

While this works nicely for all widgets, the in-game HUD (under
LegacyWidget) is exhibiting some interesting scissor artifacts.
ClientWindow: Compensate UI aspect ratio for side-by-side rendering

The root widget's logical size does not have to be the same as the
window size. Now for side-by-side rendering, the logical height is
doubled.

Also, coordinates in mouse events are now mapped appropriately for
the left/right frames.

Todo: It appears some widgets' clipping and particularly LegacyWidget
do not respect the root widget's size; at least the latter defines
its own projection matrices.
LogWidget: Use normalized scissor for content clipping

Widgets should always use a normalized scissor rather than specifying
the window coordinates manually, as the root widget's size may not be
the same as the window.

Todo: LegacyWidget must use a normalized scissor, too.
Cleanup
libgui|GLState: Setting a normalized viewport

A normalized viewport is useful when the actual root view is larger
or smaller than the render target. A normalized viewport is relative
to the render target size.
LegacyWidget|GL: Utility for setting the viewport for legacy graphics code

LegacyWidget's glApplyViewport() sets a viewport that is automatically
normalized to the root view size.
API|GL: Public GL API now uses GLState for scissor; added push/pop state

This commit fixes scissor-related issues when drawing stuff via the
public GL API (e.g., game automap).

The public GL API now internally uses GLState to set the scissor box.
This fixes a GL state update conflict between legacy code and libgui
based code. The public GL API now also has functions for pushing and
popping GLState.

The version number of the public GL API was incremented; old API is
no longer supported.
Cleanup
Implement first 3 stereo 3D modes: Mono, Green/Magenta, and Side by Side.
Create several global variables related to 3D, including some console variables.
Merge branch 'oculus-rift' of https://github.com/cmbruns/Doomsday-Engine into oculus-rift

Conflicts:
	doomsday/client/src/ui/clientwindow.cpp
ClientWindow: Update logical UI size when VR mode changes
GL: GLU is no longer needed as a dependency
Windows|Client: GLU is no longer needed as a dependency
Use already existing player-eyeheight instead of vr_viewheight.
Rename stereo 3d mode enum instances to STEREO_3D_MODE_WHATEVER.
Create unused enum names for other intended stereo modes.
Sketch in most 3D modes.
Client|Stereo 3D:Merge branch 'oculus-rift' of https://github.com/skyjake/Doomsday-Engine into oculus-rift
Rename vr variables and place them in new VR:: namespace.
Start implementing some of the newer stereo modes in detail.
Merge branch 'master' of https://github.com/skyjake/Doomsday-Engine into oculus-rift