SpinLock and Atomic to have mutating functions

They mutate the spinlock and the boxed value.

I think this program should not compile.

```swift
let a1 = Atomic<Int>(1)
a1.modify({ $0 + 1 })
a1.value
```
It should require a var.