SERVER-6018 Use gcc __sync primitives if they are available and useable
SERVER-6018 Use AtomicUInt32 instead of old AtomicUint in the BSONObj::Holder ref counter

This reverts commit 4c5319c46f492f00a39ded6f056151ec650abb54 (which was itself a revert),
and then removes some questionable debugging logic.

Conflicts:
	src/mongo/bson/bsonobj.h
SERVER-6018 Replace AtomicUInt with AtomicUInt32 in OID
SERVER-6018 Replace AtomicUInt with AtomicUInt32 in connpool
SERVER-6018 Replace AtomicUInt with AtomicUInt32 in DBClientConnection
SERVER-6018 Replace AtomicUInt with AtomicUInt32 in SSLManager
SERVER-6018 The MSGID type doesn't need to be atomic
SERVER-6018 SERVER-13913 Use std::atomic to implement AtomicWord in C++11 mode
SERVER-6018 SERVER-13913 Make AtomicWord objects non-copyable and non-movable