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 48735: [GHC] Linux/amd64: Continuous Integration|
|Build 48734: [GHC] OSX/amd64: Continuous Integration|
|Build 48733: [GHC] Windows/amd64: Continuous Integration|
|Build 48732: arc lint + arc unit|