OpenGLSystem has view and projection matrix

OpenGLSystem now uses a view and projection matrix to move the camera.
No means to move the camera through input are available yet.

vert.shade has been updated to use the VP matrix.
Added timing code

Now win32 has timing methods to retrieve a delta change in time since
the last call. The change is in milliseconds.

You must call SetupTimer() before you call GetDeltaTime() in order to
establish the timer frequency.
Beginning of camera code

OpenGLSystem camera code is in place. Currently is only rotates or moves
at a static amount.

OpenGLSystem::Update() now takes a double to match the delta time input.
Additionally it only renders at a max of 60 fps.
Fixed initial timer setting

The call to win32::SetupTimer() at the beginning was causing the first
delta to be extremely large.
GLSprite now stores a vec3 in its verts

GLsprite stores its verts as a vec3. And for testing purposes it is now
a plane on X/Z.
Moved camera code

All camera code is now in a View class. Orientations and translations
are stored and a view matrix is create when UpdateView() is called.
Calling GetViewInverse returns the correct inverse camera matrix that is
multiplied into projection.
Depth buffer issue and View cleanup

View's various method are now more concise and clean. Additionally the
ctor now sets the correct starting values for a origin translation and
looking at the -z axis.

Depth buffer is also enabled now.
Add KeyDown polling.

Win32 now exposes the ability to poll if a key is down or not.
Updated view class

The view class now the camera position as a vector and not as components
(x,y,z). This means when you translate it moves the camera instead of
just storing an ofset.
Fixed camera roll rotation

Camera roll now works. The up vector passed to glm::lookat is now
adjusted based on camera orientation. This change also fixes the oddity
with yaw and stafing.

Projection matrix is now past to the shader.
Changed view starting position.

View's starting position is now set to 0,0,0 in the ctor.

OpenGLSystem::Start() now sets it to 4,3,-10.
Added the files for GLMesh component

These files will serve as the mesh component.
Moved view to its own source file

View is now a standalone interface. Currently there is only 1 derived
type the 6-DOF camera. Other cameras could include the FPS camera.

Also Translate was renamed and its parameters changed to better reflect
what is happening in the method.
Fixed a cast issue in OpenGLSystem::Update

There was an issue with casting and an exception wasn't being thrown
when it should have.

Also adding test drawing code for GLIcoSphere. GLIcoSphere is in the
next commit.
Add GLIcoSphere component

GLIcoSphere is a icosahedron that can refined to any level to produce a
icosphere. The larger the refinement level the more round the sphere is.

The transform operations starting with GLIcoSphere has been moved to
GLTransform.
Fixed GLSprite not rendering

GLSprite didn't set a model matrix for the shader.
Added a method of passing properties to ISystem::Factory

ISystem::Factory now receives a properties parameter to supply specific
creation parameters for the given component.
Fix color buffer issues in GLIcoSpehre
Property didn't have a copy ctor

Added a copy Ctor to property to prevent crashing upon copy. This is a
destructive copy and will invalidate the pointer in the original. THINK
MOVE!
Made user of properties in OpenGLSystem::Factory

OpenGLSystem::Factory for GLIcoSphere now uses the properties to set a
uniform scale and translation x, y, z.

Final fix for casting in OpenGLSystem::Update. Now it checks for a
dynamic_cast and throws std::bad_cast with a blank catch to allow the
next component type to check the cast.