[InstCombine] Optimize atomicrmw <op>, 0 into load atomic when possible
This commit teaches InstCombine how to replace an atomicrmw operation
into a simple load atomic.
For a given atomicrmw <op>, this is possible when:
- The ordering of that operation is compatible with a load (i.e., anything that doesn't have a release semantic).
- <op> does not modify the value being stored
Differential Revision: https://reviews.llvm.org/D57854