Use C++11 atomics to avoid undefined behavior.

C++11 does not guarantee that loads / stores are atomic for any
variable.  Using C++11, we force atomicity for the log level - but do not
provide any guarantee about ordering or visibility.

Without this, setting and getting the log level results in undefined
behavior.  Undefined behavior results in illegal C++11.

On any known processor and platform, this should be a no-op; however, the
code is now conforming C++11.