[BUILD] suppress certain warnings

- suppress undef macros because of platform-specific macros
- add Wno-unknown-pragmas for gcc only (since gcc does not know the
  clang specific diagnostic pragmas)
[FIX] added pragmas

- suppress warnings in certain positions where we either believe that
  the code is correct (or the code is unfixable)
[BUILD] ignore additional warnings for clang
Merge pull request #821 from hroest/fix/suppress-warnings

[FIX,BUILD] suppress clang warnings