[ubsan] Use __sanitizer::atomic_exchange(), prefer shared impl.

Specify weaker memory order in case we optimize for it in the future,
presently still doing same __sync_lock_test_and_set() as before.

Change suggested by Alexey Samsonov, thanks!

git-svn-id: https://llvm.org/svn/llvm-project/compiler-rt/trunk@172429 91177308-0d34-0410-b5e6-96231b3b80d8