Add logging and backoff and simple retry logic

Fixes #1243 as described with a few more obvious cases as well.

/cc @philips @unihorn @xiangli-cmu
This is not true right now. Calling `createSelf` the second time returns an error, assuming that the first one succeeded. 
We made `createSelf` this way, since we want to prevent both of the two etcd processes with identical nodeID joining into the cluster incorrectly.