Add math library
Set version in the fragment shader
Store rotation as rotation matrix instead of euler angles
Eliminate matrix inversion

Camera's view matrix is an inverse of its transformation matrix.

Previously, the view matrix is calculated as follows

    View = inv( Translation * Rotation * Scale )

which can be converted to

    View = inv( Scale ) * inv( Rotation ) * inv( Translation )

The inverse of scale matrix is calculated as follows

   [ 1/Sx 0    0    0 ]
   [ 0    1/Sy 0    0 ]
   [ 0    0    1/Sz 0 ]
   [ 0    0    0    1 ]

The inverse of translation matrix is calculated as follows

   [ 0  0  0  0 ]
   [ 0  0  0  0 ]
   [ 0  0  0  0 ]
   [ -x -y -z 1 ]

The inverse of rotation matrix is its own transpose since a rotation matrix
is an orthogonal matrix. http://en.wikipedia.org/wiki/Orthogonal_matrix
Add colors to the triangle
Wrap triangle's data in a data structure and not in globals
Add cube object
Add color to the cube
Draw a cube
Enable depth test
Fix where to enable the triangle's shader