Add code to create buffers for various geometric data

It turns out that a lot of the OpenGL methods are undefined. I
might have to use GLEW or something similar to access these
methods.
Add OpenGL function loader code
Draw points using the vertex buffer objects
Draw triangles using the vertex buffer objects
Add normal visualization
Add signals and slots for initializing OpenGL in modules

Now when either the Vis or Nav widget initializes OpenGL, it
emits a signal that is caught by the MainWindow and passed along
to each module's initialization slot. The base module class
implements this initialization slot to do nothing, but derived
modules such as RC3D can choose to override it to initialize
shaders, VAOs, etc. while ensuring that the correct context is
current. I've also separated the initialization slots between
the "Big" and "Small" viewports.
Pass a format specifier to the vis and nav widgets

Currently both of these widgets are being forced to use the OpenGL
3.3 Compatibility profile.
Compile and link shader programs on view init in RC3D
Use shader to draw scene points
Draw triangles with the shader

Textures and normals aren't yet supported.
Draw using textures in the shader
Change shaders to support Geometry processing

The geometry shader I've added will be used to visualize normals
by allowing the length of the normals to increase through a uniform
variable passed in at runtime.
Compile and link geometry shader
Save normal shader uniform locations
Adjust normal vis buffer to reuse vertex data and draw normals
Add option to draw normals to GUI and interactively change size
Move normal visualization outside of drawPoints

This allows the normals to be drawn even when drawing triangles.
Enable projector direction visualization
Save and load the scene triangulation

Additionally stop generating normals upon scene loading. Now normals
along with triangles are saved and loaded along with the scene.