further tests showed issues with inverse function, now to better match what was originally happening, the inverse only happens on the 3x3 portion of the matrix and translation is handled separately.
Frustum test now uses more real world examples of a projection matrix. Test for the full unproject stack of math to test its result as unproject was where the issue about inverse originated
added more unit tests to match values between templated and matrix
tests showed discrepancies in affineInverse, fixed the function to return what is expected.