Fix atomicops build failure on non-Clang

We cannot use Clang's `__has_extension` macro unless we really are compiling on Clang, which means we cannot use this expression:

```
    #if (defined(__clang__) && __has_extension(c_atomic)))
    // ...
    #endif
```

On GCC, this generates the following errors:

```
    In file included from ./google/protobuf/stubs/atomicops.h:59:0,
                     from google/protobuf/stubs/atomicops_internals_x86_gcc.cc:36:
    ./google/protobuf/stubs/platform_macros.h:67:41: error: missing binary operator before token "("
       (defined(__clang__) && __has_extension(c_atomic)))
                                             ^
    In file included from google/protobuf/stubs/atomicops_internals_x86_gcc.cc:36:0:
    ./google/protobuf/stubs/atomicops.h:196:40: error: missing binary operator before token "("
      (defined(__clang__) && __has_extension(c_atomic))
                                            ^
```

Instead, we have to protect the `__has_extension` expression by only executing it when `__clang__` is defined:

```
    #if defined(__clang__)
    # if __has_extension(c_atomic)
    // ...
    # endif
    #endif
```
Can you make this macro only contain the string literal? I remember "#define XXX #error" doesn't compile on some platforms (likely to be VC on windows).