Add test for AtomicUpdate

This PR also implements FakeEtcdClient.CompareAndSwap.

I'll squash this PR after review.
Just want to double check here - if AtomicUpdate applies only to api objects, we should probably call it out either in the method signature (AtomicUpdateObj) or at a minimum the comments.  Will there be a use case for storing non-api objects in etcd that someone would want to benefit from AtomicUpdate on it?