Define CLANG/GNUC_PREREQ macros to check gcc/clang minimum version
(code refactoring)
* src/atomic_ops.h (AO_GNUC_PREREQ, AO_CLANG_PREREQ): New internal
macro.
* src/atomic_ops.h (AO_EXPECT_FALSE): Use AO_GNUC_PREREQ() instead of
direct use of __GNUC[_MINOR]__.
* src/atomic_ops.h [__x86_64__] (AO_USE_SYNC_CAS_BUILTIN): Likewise.
* src/atomic_ops/sysdeps/gcc/arm.h (AO_GCC_ATOMIC_TEST_AND_SET):
Likewise.
* src/atomic_ops/sysdeps/gcc/mips.h: Likewise.
* src/atomic_ops/sysdeps/gcc/tile.h: Likewise.
* src/atomic_ops/sysdeps/gcc/x86.h (AO_GCC_ATOMIC_TEST_AND_SET):
Likewise.
* src/atomic_ops/sysdeps/standard_ao_double_t.h (pragma GCC,
double_ptr_storage): Likewise.
* src/atomic_ops.h [!AO_ATTR_NO_SANITIZE_MEMORY]
(AO_ATTR_NO_SANITIZE_MEMORY): Use AO_CLANG_PREREQ() instead of direct
use __clang_major__ and __clang_minor__.
* src/atomic_ops/sysdeps/gcc/arm.h (AO_GCC_ATOMIC_TEST_AND_SET,
AO_ARM_HAVE_LDREXD): Likewise.
* src/atomic_ops/sysdeps/gcc/mips.h: Likewise.
* src/atomic_ops/sysdeps/gcc/tile.h: Likewise.
* src/atomic_ops/sysdeps/gcc/x86.h (AO_GCC_ATOMIC_TEST_AND_SET,
AO_SKIPATOMIC_double_load): Likewise.
* src/atomic_ops/sysdeps/standard_ao_double_t.h (pragma GCC): Likewise.