OpenGL Refactor

Supersedes #83.

>Rework OpenGL renderer.
>
>The OpenGL renderer has been revised, with the following changes:
> - Initialization and rendering have been refactored to reduce the number of
>   redundant objects used.
> - Framebuffer rotation is now done directly, using texture mapping.
> - Attempt to support the LCD framebuffer size registers, under the
>   assumption that the 3DS hardware does hardware scaling in case they
>   don't match the physical LCD resolution.
> - Vertex coordinates are now given in pixels, and the projection matrix
>   isn't hardcoded anymore.

Fixed up outstanding code review comments and changed RenderXFB to take non-const references.

They mirror the math notation for describing matrices. The alternative of just listing them out requires you to go and figure out what row/column each array index corresponds to.