Reimplement Atomic::load/store as templates. One goal is to generalize the API and make it more type-safe, eliminating the need for most casts. This includes replacing the type-information-losing load/store with type-safe load/store. Another goal is to provide a mechanism that can be shared by OrderAccess loads and stores that are similar.
JDK-8184334, addressing only Atomic::load/store.