Fix build system
Fix tests: move test cases into cpp files
Ignore build target directories
Fix all the things

Move template function definitions into impl files.
Move math library and tests to its own namespace.
Condense time and Timer into Timer.