Refactor GlfwOpenGlWindow to use Camera

- Replaced Frustum member with Camera member
Modified class Frustum

- Move contents from .hpp to both a .hpp and .cpp file
- Added setter methods
Refactored TestUtils

- Created namespace TestUtils::predicates
- Make test methods work with gtest EXPECT_PRED2() so there is better failure output
- Refactor Mesh_Test to use TestUtils updates
Made GlmOutStream methods inline

- To prevent method redefinition errors when linking mulitiple translation units,
  such is the case with RunAllTests binary
Saving work from refactoring Frustum class

- Refactoring Frustum class into .hpp and .cpp files
Saving work
Minor change to MeshNormals demo