code cleanup

*fixed some warnings under gcc (-Wall -Wextra -Wpedantic)
*moved macros into a seperate file
*removed macros from enum_map.hpp
*cleaned up enum_map.cpp
*changed old assert / precondition to the new version
*combined and refactored some code in math.hpp
*added some tests for math