Make strict

This adds a new `make` target called `strict`, this add more aggressive compiler options, specifically, it adds the following:

    -pedantic -Wall -Werror

This is meant for development, not for use by normal users - it holds us to a higher standard, but when a end user compiles, they'll still use the options they did in the past. This also updates the travis-ci config to use the strict option, that way we expose issues as soon as possible.