Take almost all warnings into use except `format-overflow` and `unused-function`. format-overflow needs to be handled in a separate commit.
GCC 8 enables -Werror=return-type by default which combined with -Werror causes the build to fail.