Atomic operations for size_t

This patch adds atomic operations for `size_t` values, just like the existing ones for `int` and `unsigned int`.
I assume the return values change from `void` to `int`, `unsigned int`, and `size_t`, respectively, because the previous documentation was erroneous.