Mark all pointers in the atomic utils API as `volatile` for the following
reasons:
1. The guarantees provided by `volatile` is a subset of the guarantees
provided by the atomic utils. This makes this fact more obvious.
2. Casting `volatile` off is undefined behavior. In order to be able to use
the atomic utils on memory mapped IO (which needs the `volatile` qualifier)
without resorting to undefined behavior, this API change is needed.