Add test for AtomicUpdate

This PR also implements FakeEtcdClient.CompareAndSwap.

I'll squash this PR after review.
> Will there be a use case for storing non-api objects in etcd that someone would want to benefit from AtomicUpdate on it?
I don't think there is any, so I think we can just limit this to "api objects" only, and rename this to AtomicUpdateObj.

There is a SetObj call in 221 anyway :)