Allow user to override our non-standard defaults

CMake loads option defaults from the platform file and then usually
proceeds to write these to the cache, so it is not possible to see
if an option was specified by the user, or was the default.

By setting CMAKE_NOT_USING_CONFIG_FLAGS, we regain control over the
options and can then set this to what we think is suitable, provided
that the user hasn't specified something for us.
Allow whole program optimization to be switched off
Minor refactoring to make code more readable
Merge pull request #225 from rolk/225_cxxflags

Let the user set compilation flags