CodeGen: make use of weaker failure orders on cmpxchg.

This makes Clang take advantage of the recent IR addition of a
"failure" memory ordering requirement. As with the "success" ordering,
we try to emit just a single version if the expression is constant,
but fall back to runtime detection (to allow optimisation across
function-call boundaries).

rdar://problem/15996804
CodeGen: use symbolic enumerators for memory order

It makes the code clearer and less error-prone to use our (already
known) special values for the various memory order cases.