Use larger S_EPSILON in is_zero for all float types.
Add clamp_value.
Add quat_t implementation, some other stuff.

* Use static_assert to ensure types are POD/use floating point types
* Make sure all math functions are std::*
* Remove unneeded operators
* Add braces to quat_t static initialization