Add better logging to matrix diagnostics.
Fix read of uninitialized Frustum convention variables in Frustum tests detected by Valgrind.

==7934== Conditional jump or move depends on uninitialised value(s)
==7934==    at 0x484A1A: math::Frustum::WorldRight() const (Frustum.cpp:86)
==7934==    by 0x4863EC: math::Frustum::NearPlanePos(float, float) const (Frustum.cpp:250)
==7934==    by 0x489459: math::Frustum::CornerPoint(int) const (Frustum.cpp:608)
==7934==    by 0x4A69FE: math::Plane::Intersects(math::Frustum const&) const (Plane.cpp:690)
==7934==    by 0x48A09E: math::Frustum::Intersects(math::Plane const&) const (Frustum.cpp:739)
==7934==    by 0x52EBCE: RandomFrustumInHalfspace(math::Plane const&) (NegativeTests.cpp:105)
==7934==    by 0x5355E0: TestFunc_AABBFrustumNoIntersect(Test&) (NegativeTests.cpp:431)
==7934==    by 0x56C669: RunTest(Test&, int, int, JSONReport&) (TestRunner.cpp:134)
==7934==    by 0x56D470: RunOneTest(int, int, char const* const*, JSONReport&) (TestRunner.cpp:278)
==7934==    by 0x56D575: RunTests(int, int, char const* const*, JSONReport&) (TestRunner.cpp:303)
==7934==    by 0x56D925: main (TestRunner.cpp:350)