All PUTs now atomic

Don't commit yet, needs tests.

Add ResourceVersion to JSONBase, hook it up to etcd index to get atomic PUTs.

Move etcd helpers to tools package so they can depend on api package. Clarify in doc comments that util must not depend on api package, but tools may.
A subtlety: FindJSONBase requires that obj is a pointer to a struct. Otherwise, it couldn't return a pointer to a JSONBase that it would make sense to write to (reflect enforces this, but it still wouldn't work even if reflect didn't).

FindJSONBaseRO will accept both pointers-to-structs and structs, and returns a copy of the JSONBase. So they are actually doing different things.