TINYGL: Maths Code Refactoring

This pull request represents the completion of the first deliverable of my Google Summer of Code project.
The PR contains the c++ style math refactored code.
This code mantains the same level of performance of the original version (even though sometimes it also run  faster).
If you have any questions or doubts please ask.
What is the eventual layer of indirection here? The current implementation ensures that there are 2 function calls both for inv_ortho and inverse, instead of 1 for one of them.