cpp: Change strategy, assume unknown symbols = undefined

It's too much work to add a DEFINE or UNDEF for all pre-defines
that a C header checks for (e.g. libpng has hundreds, and changes
with each version).

Instead, fbfrog should immitate gcc, have the same pre-defines,
and allow presets to add additional pre-defines if needed.
-v verbose output reports unsafe assumptions (i.e. if an unknown
symbol is treated as undefined).
Don't prefix "/" to all file/dir names when not using a preset
Fix "assuming undefined" error report location
cpp: Fix duplicate #define check to check the bodies aswell
Improve "conflicting #defines" error reporting
presets: Re-add UNDEF

- to let presets silence the -v warnings if wanted
- perhaps this could allow the default built-in #defines/#undefs to be
  read in from a preset file instead of being hard-coded