Add test for AtomicUpdate

This PR also implements FakeEtcdClient.CompareAndSwap.

I'll squash this PR after review.
If this got through, it means you probably need to install the hooks. I think the instructions are in the README.md.