Clang doesn't support some flags that GCC does, so conditionally check the compiler and add them if we are doing a GCC build
clang fix for *this syntax. ifdef out template stuff that breaks Clang; shouldn't matter since the only usage was the *this syntax stuff
ifdef some memcpy assembly that clang doesn't like. ifdef in th standard lbrary memcpy that clang does like.
silence a clang error about narrowing. Designate clang to use the reference version of yuv2rgb since it doesn't like the assembly syntax of yuv2rgb_sse2
edit out some inline assembly that clang didn't like and replace with a C++ equivalent