Improve build process

Support CFLAGS, CXXFLAGS and LDFLAGS
Runtime resolve location of SDL headers and libraries

Do not automatically build test target (gtest dependency)
Fix struct/class missmatch
Add missing header for std::function