Added extra warning ignore macros for existing clang and gcc warnings.

Also made the macros correctly push and pop the ignore flags, so has to not 'hide' unwanted warnings by mistake.