atomicModifyIORef allocates memory. We really don't need that
much power to implement atomicWriteIORef, so we shouldn't
have to eat the cost. Implement it as a new primop instead.
Note: this is an alternative to D4886.
|No Unit Test Coverage|
|Build 48723: [GHC] Linux/amd64: Continuous Integration|
|Build 48722: [GHC] OSX/amd64: Continuous Integration|
|Build 48721: [GHC] Windows/amd64: Continuous Integration|
|Build 48720: arc lint + arc unit|